Nginx fastcgi-buffers 調整
Nid: 1184
error.logに以下のwarningが多発する場合、fastcgi-bufferを調整する。
"an upstream response is buffered to a temporary file"
デフォルト値は、
fastcgi_buffers 8 4k|8k;
buffer sizeデフォルト値は、OSのPAGESIZEに等しく、次のコマンドで確認できる。
$ getconf PAGESIZE 4096
設定値を調整するために、ログを分析する。
# maximum response size (bytes)
$ awk '($9 ~ /200/)' access.log | awk '{print $10}' | sort -nr | head -n 1 1841390
# average response size (bytes)
$ echo $(( `awk '($9 ~ /200/)' access.log | awk '{print $10}' | awk '{s+=$1} END {print s}'` / `awk '($9 ~ /200/)' access.log | wc -l` )) 15629
この平均値、最大値から、以下のように設定する。
fastcgi_buffer_size 32k; fastcgi_buffers 128 32k;
この設定では、Fastcgi bufferは、 32k+128*32k=4128k までメモリにストアできる。
参考 サイズの大きいリクエストの確認。
$ awk '($9 ~ /200/)' access.log | awk '{print $10, $7}' | nkf --url-input | sort -n | tail