
Nginxのバッファー設定方法まとめ(ワードプレスの場合)
Nginxの初期設定として、バッファーサイズの指定があります。
ワードプレスの場合、デフォルト値ではエラー連発。
速度も下がるので、適切な設定をしないといけません。
- ※バッファー以外の関連の設定も紹介しています。
- ※理解できていない項目有り。
- ※間違っていたらごめんなさい。
自分のバッファー設定
自分は次のように設定しています。
client_body_buffer_size 2m;
client_max_body_size 20m;
proxy_buffer_size 32k;
proxy_buffers 50 32k;
proxy_busy_buffers_size 64k;
fastcgi_buffer_size 8k;
fastcgi_buffers 50 16k;
fastcgi_busy_buffers_size 16k;
fastcgi_temp_file_write_size 16k;
それぞれ意味などを解説します。
client_body_buffer_size
これはアップロードに使われるバッファーです。
ワードプレスであれば、メディアへの画像アップロードなど。
「client_body_buffer_size」は一つのアップロードに使うバッファー。
「2m」に設定した場合、2.4MB程度まで対応できます(20%程度余裕がある)。
これを超えるとディスク領域を使用するため、速度等が低下します。
2mの設定で3MBの画像をアップロードするとエラーログに書かれますが、
一般的なワードプレスサイトの場合、特に問題ではありません。
問題になるのは画像投稿型サイトくらいです。
自分がアップロードするおおよその最大サイズを指定するとOK。
ほぼエラーログ回避のために設定します。
client_max_body_size
これは最大アップロードサイズです。
20mとすると、約20MBまでの画像をアップロードできる。
これを超えるファイルをアップロードすると、エラーとなり中断されます。
php.iniの最大アップロードサイズと同じようなものです。
画像投稿型サイトだとしっかり設定しないといけませんが、
自分しかアップロードしないサイトだと、100mと大きく設定しても問題ないだろう。
proxy_buffer_size
リバースプロキシを使用する場合に使われるバッファー。
バックエンドサーバーなどからのデータ受信に使うバッファーです。
その中でも、一番最初に使われる一つのバッファー。
初期の受け皿としての数値を設定します。
この受け皿を超えると、後述する「proxy_buffers」を使います。
画像以外はほぼこのバッファーで処理したい。
CSS、JS、ロゴなどの軽いファイルを処理するバッファーと考えて良い。
ワードプレスでは「32k」がちょうど良いと思います。
全てのファイルに約32KBのメモリを使うという設定になるので、
小さなファイルを膨大に使っているサイトは「32k」だとやや危険。
自分のサイトに合わせて設定する項目です。
proxy_buffers
最初の受け皿で対応できなかった場合に使うバッファー。
「50 32k」だと「32Kのバッファーを50個まで追加で使う」という設定になる。
合計で「1600k」となり、これで約1.6MBまでのデータ受信に対応できます。
3MBの画像を使っているなら、「80 32k」とします。
大きな画像しかないのであれば、「20 128k」とバッファの個数を減らしても良い。
おそらく、個数は減らした方が良いはず。
バッファーの個数、メモリの使用が最小になるよう、
自分のサイトに合わせて設定します。
proxy_busy_buffers_size
「proxy_buffer_size」の2倍に設定?
すみません。
この項目は理解できていません…。
2倍の値がデフォルトですので、2倍に。
※求むコメント
fastcgi_buffer_size
PHPファイルのデータ受信に使う最初のバッファー。
PHP専用のバッファーです。
画像やCSSの表示は関係ない。
初期値ではワードプレスでは足りずにエラーログが出ます。
ただ、エラーが出るのはほぼ管理画面の表示の場合。
時々バッファー容量が足りない処理が発生します。
64bitOSの場合は初期値は「8k」。
ここは初期値で良いです。
(デフォルト値なので設定する必要無し)
fastcgi_buffers
最初のバッファーで足りない場合に使う追加バッファー。
ワードプレスの場合はほぼ、記事作成など管理画面で使われるバッファーとなります。
管理画面は初期値の「8 8k」では必ず足りずにエラーログに出力されます。
「50 16k」と大幅に増やせばOKです。
もしエラーが出たならば、増やしてください。
プラグインなどにより設定数値は変わってくるはずです。
fastcgi_busy_buffers_size
「fastcgi_buffer_size」の2倍に設定?
こちらも同じく、理解できていない。
デフォルトの設定となる「fastcgi_buffer_size」の2倍にしておきます。
(デフォルト値なので設定する必要無し)
※求むコメント
fastcgi_temp_file_write_size
「fastcgi_busy_buffers_size」と同じ値に設定?
こちらも理解できていません…。
デフォルトが「fastcgi_busy_buffers_size」と同じ値なので、
同じ値に設定しています。
(デフォルト値なので設定する必要無し)
※求むコメント
まとめ
バッファのサイズ、個数ができるだけ少なくなるよう、
自分のサイトに合わせて設定する。
バッファはデータ受信の一時的な受け皿です。
そのため、受信するデータとほぼ同等のサイズが必要になる。
ネット上には「256k」と無駄に大きな設定にしているところがありますが、
メモリの無駄遣いなので絶対にダメです。
メモリ2GのVPSだと少々エラーが出るくらいのギリギリが良いと思います。
バッファで一番重要なのが、リバースプロキシにしている場合。
このバッファ設定をミスるとアクセス集中を処理できずにダウンしてしまう。
メモリは最小に。これを心がけていきたい。
同時アクセス対策重視なら、「32k」は大きすぎるかもしれない。
「8k」として個数を増やす方が処理できるのか?
このあたりは実験していないので、わからない。
・・・ここを実験してから記事を書けというツッコミが聞こえますが、、
中途半端に終わります。こんな記事、ダメ絶対。
是非ご感想・ご指摘等をください。