Есть php скрипт, который выполняет обработку большого количества изображений (ресайз, наложение вотермарков и тд.). Проблема в том, что скрипт по истечению 40 минут работы отдает 500 ошибку, а затем, с каждым последующим запуском отваливается еще раньше, хотя таймаут на выполнение запроса стоит около часа. В логи пишет upstream prematurely closed connection while reading response header from upstream
У Apache
max_execution_time 3600
max_input_time 3600
upload_max_filesize 512M
post_max_size 512M
memory_limit 512M
У nginx
proxy_connect_timeout 3600s
proxy_send_timeout 3600s
proxy_read_timeout 3600s
proxy_buffer_size 512k
proxy_buffers 512 4096k
proxy_busy_buffers_size 4096k
proxy_temp_file_write_size 4096k
client_max_body_size 30m
client_body_buffer_size 4096k
large_client_header_buffers 8 32k
В самом скрипте после обработки каждого каталога очищается дисковый кэш.
Как можно решить данную проблему, не прибегая к крону и/или запуску скрипта непосредственно на сервере?
Ответ
Оказалось что apache съедал всю оперативку, но в лог ничего не писал, а писал nginx. gc_collect_cycles() исправил ситуацию.
Комментариев нет:
Отправить комментарий