[PHP-FPM] WARNING: [pool www] server reached pm.max_children setting (30), consider raising it

WordPress (Nginx + PHP-FPM) なサイトで Admin ページで Bad Gateway を頻発させていました。

Nginx のエラーログ

tail -F /var/log/nginx/codenote.net/error.log 

[error] 3029#0: *12410 connect() to unix:/var/run/php-fpm/www.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 185.11.147.17, server: codenote.net, request: "POST /xmlrpc.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/www.sock:", host: "codenote.net"

PHP-FPM のエラーログ

tail -F /var/log/php-fpm/error.log

WARNING: [pool www] server reached pm.max_children setting (30), consider raising it

エラーログに書いてあるように pm.max_children の設定値の上限に達しているので設定値を上げて解決させましょう。

# vim /etc/php-fpm.d/www.conf
# 30 で上限に達していたので適当に 50 に上げてみましょう
 
pm.max_children = 50

設定変更した後、PHP-FPM を reload して設定を反映させます。

service php-fpm reload

再度 tail -F /var/log/php-fpm/error.log でエラーログを監視して WARNING メッセージが表示されなくなったら解決できたと思います。

まだ WARNING メッセージが表示されていたら、更に pm.max_children を 60, 70 と上げていってメッセージが出力されなくなるまで調整しましょう。