NGinx — an upstream response is buffered to a temporary file while reading upstream

На одном из ресурсов с хорошим посещением заметил в логах часто повторяющуюся ошибку

2016/10/05 20:16:58 [warn] 6488#0: *6021227 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/4/20/0000438204 while reading upstream, client: 8.8.8.8, server: example.com, request: "GET /6155-protrek_japonskie_na-remeshke_calendar HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "example.com"

Дело в том, что перед тем как передать ответ от php-fpm nginx помещает его в буфер в памяти. Если весь запрос не помещается, то оставшаяся его часть записывается во временный файл на диске. По умолчанию этих буферов 8 и под каждый из них выделено всего 4 кб памяти.
Решением будет увеличить объём буфера(ов), используя модуль fastcgi_buffers

location ~ .php$ {
    ...
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    ...
}

Проверяем и применяем настройки:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@protimes:~# nginx -s reload

Добавить комментарий