[Linux] Nginxで502エラーが頻発した際にやること
目次
Nginxで502エラーが頻発した際にやること
Nginxを運用した際にアクセスが大量に発生し502エラー(Bad Gateway)が発生しまくったときにやったこと。
/etc/nginx/nginx.conf
worker_processes を実際のCPUのコア数と合わせる
worker_processes auto;
でも良いらしい。
/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
しておくこと。