php5-fpm:サーバーがpm.max_childrenに到達しました


41

私が持っているnginxの +のPHP5-FPMを。1時間に数回私のWebサイトがスタックし、ログファイルに次のように表示されます

警告:[pool www]サーバーはpm.max_children設定(5)に達しました。引き上げることを検討してください。

/etc/php5/fpm/pool.d/www.confファイルには、次の構成が含まれています。

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

サーバー: AMD Opteron™3280、Octo-Core、8x 2.4 GHz、16 GB DIMM(DDR3)。

このサーバーのwww.confファイルにどの数字を入れるべきかわかりません。誰か助けてもらえますか?ありがとう

回答:


40

PHP-FPMがに到達する理由は多くありますmax_children。最も一般的なものは次のとおりです。

  • クライアントからの多くの並列リクエスト
  • PHPスクリプトの実行が遅い
  • の非常に低い設定 max_children

あなたのマシンのスペックを見て、PHP + Nginx以外は何も実行していないと仮定すると、5よりはるかに高く設定できると思います。あなたは8コアを持っていると言います。おそらくそれらすべてを使用することはできません。通常、PHPスクリプトのメモリ消費量に応じて、コア数x 2またはコア数x 4のような値に設定します。


phpチャットを備えた出会い系サイトで、ユーザーは数百万のインスタントメッセージを送信します。昨夜、ユーザーがオンラインで最大300人だったとき、コマンドnetstat -an | grep 80 |
wc-

1
私は実際に同様の出会い系サイトを持っています。PHPの子がもっと必要だと思います。私の設定は次のとおりです:20,000人の同時オンラインユーザー、それぞれ8コアの12台のPHPマシン、各PHPマシンの32人のワーカー。それはかなりうまくいきます。また、PHPが巨大でない限り、空きメモリの量も確認する必要があります。空きメモリがある場合は、さらに多くのワーカーに使用してみませんか?
再生

@ user1821484これは正しいです。pm.max_childrenあまりにも低いです。1GBのRAMを搭載した小さなVPSサーバーでは、値10が妥当です。はるかに大きなサーバーがあります。エラーの受信を停止するまでこの値を上げ、トラフィックが急増した場合に再度上げます。
マイケルハンプトン

答えてくれてありがとう。pm.max_childrenの設定を10に増やして、次のエラーが表示されるようになりました。警告:[pool www]はビジーのようです(pm.start_servers、またはpm.min / max_spare_serversを増やす必要があるかもしれません)。アイドル、合計8人の子供。誰かが私が増やす必要があるものを私に提案できますか?ありがとう。
user1821484

cores x 2またはcores x 4は、私にとっては非常に低い音です。pm.max_children = 48の 8コアと8GB RAMのマシンがありますが、それでもサーバーがpm.max_childrenに達したという警告が表示されます。このマシンは、CPUまたはメモリの制限に近づいていません。より良いアプローチは、対応するnginx(またはapache)設定と組み合わせてこの設定を最適化し、各PHPプロセスが消費するメモリ量を決定した後に値を選択することだと思います。
S.インプ

18

pm.max_requests値(デフォルトでコメント化されています)を設定することで、これらのエラーの修正に役立つことがわかりました。この設定は、特定の数の要求を実行した後に子要求を強制的に再生成し、コードまたはサードパーティのライブラリのどこかにメモリリークがある場合に役立ちます。

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

pm.max_requests = 500

13

このリンクは役に立つかもしれません-それはシステムのメモリ量に基づいて子プロセスの数を計算する方法を説明します:


7
リンクがなくなると、この答えは役に立たなくなります。
miken32

2
基本的に、リンクは... pm.max_childrenの適切な値は次のように計算できます:pm.max_children = Webサーバー専用の合計RAM /
最大子
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.