PHP-FPM - server reached pm.max_children - Warningエラー対処法

当ページのリンクには広告が含まれています。

スポンサーリンク

nginx + php-fpm で運用しているサーバーが「server reached pm.max_children」というWarningエラーを吐いていたので、その対処方法を紹介します。

PHP-FPMについてはこちらを参考にしてください。
» PHP-FPMのインストールと設定

Warningエラーの詳細です。

# less /var/log/php-fpm/error.log | grep pm.max_children
[27-Aug-2013 16:02:37] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it
[27-Aug-2013 16:04:22] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it
[27-Aug-2013 17:00:51] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it
[27-Aug-2013 17:31:30] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it
[27-Aug-2013 17:33:18] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it

そんなに頻度が高いわけではないですが、エラーを吐いているときにブラウザでWebサーバー(nginx)へアクセスするとタイムアウトする場合があります……。これは、Warningエラーに表示されているようにプロセスマネジャー(pm)の子プロセスの数が最大値(max、ここでは50)に達していることが原因です。

というわけで、子プロセスの最大数(pm.max_children)を増やしてあげましょう。

pm.max_children とは

pm = static の場合 → 作成される子プロセスの数
pm = dynamic の場合 → 作成される子プロセスの最大数

エラー対処方法

PHP-FPMの設定ファイル(/etc/php-fpm.d/www.conf)を編集します。

pm = dynamic
pm.max_children = 100 ← 子プロセスの最大数を50から100に増やしました

編集前(.old)と編集後をdiffコマンドで比較すると、以下のようになります。

# diff /etc/php-fpm.d/www.conf.old /etc/php-fpm.d/www.conf
73c73
< pm.max_children = 50
---
> pm.max_children = 100

以下のコマンドを実行し、変更した設定を反映します。

# /etc/init.d/php-fpm reload

nginx の人気記事

  1. sudoユーザーを追加する方法
  2. nginxの設定と使い方
  3. nginxとApacheの性能比較
  4. PHP-FPM - server reached pm.max_children - Warningエラー対処法

関連記事(一部広告含む)