Leon1010

Я в Соц.сетях:

Теги:

Ссылки

Nginx: an upstream response is buffered to a temporary file

Данное предупреждение выводится в логах Nginx при работе в связке с PHP-FPM:

Проблема вызвана недостаточным размером буфера Nginx, связи с чем для передачи полученных от PHP данных, Nginx предварительно записывает их во временный файл на диске.

Исправить: an upstream response is buffered to a temporary file

Для устранения предупреждения, необходимо увеличить размер буфера в Nginx. Для этого в секцию location ~ .php$, необходимо добавить следующие параметры:

fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

В итоге должно получится как в примере ниже:

location ~ .php$ {
    try_files $uri = 404;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    include fastcgi_params;
}

Как узнать, какого размера буфер требуется для страницы?

Перед тем как передать ответ от интерфейса FastCGI (например, PHP-FPM) Nginx помещает его в буфер расположенный в памяти. Если весь ответ не помещается в памяти, часть его записывается во временный файл на диске.

Средний размер ответа можно указать командой:

echo $(( `awk '($9 ~ /200/)' access.log | awk '{print $10}' | awk '{s+=$1} END {print s}'` / `awk '($9 ~ /200/)' access.log | wc -l` ))
Запись опубликована в рубрике Администрирование с метками .