fastcgi-buffers 調整

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