[Linux] Nginxで502エラーが頻発した際にやること

目次

Nginxで502エラーが頻発した際にやること

Nginxを運用した際にアクセスが大量に発生し502エラー(Bad Gateway)が発生しまくったときにやったこと。

/etc/nginx/nginx.conf

worker_processes を実際のCPUのコア数と合わせる

worker_processes  auto;

でも良いらしい。

参考:
Nginxのパフォーマンスを極限にするための考察

/etc/php-fpm.d/www.conf

/var/log/php-fpm/error.log
を見るとおそらく

WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning X children, there are X idle, and X total children
WARNING: [pool www] server reached pm.max_children setting (XXX), consider raising it

というようなエラーが発生しているはず。

ようやくするとphp-fpmのプロセス数が上限に達しました、ということ。

なので、/etc/php-fpm.d/www.confを編集し、上限を上げる

例:100までプロセスを作成することができる

pm.max_children = 100

pm.max_childrenを増やせば増やすほど、メモリとCPUを食うので、topもしくはhtopでリソース状態を見ておくこと。
pm.start_servers や pm.min_spare_servers や pm.max_spare_serversも適宜変えてもよいが、とりあえずpm.max_childrenだけ上げても可

変更したら

/etc/init.d/php-fpm restart

しておくこと。

参照:
php-fpmのエラーにぶつかりながら設定の最適化を図る
nginxとphp-fpmを調整する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です