web-dev-qa-db-ja.com

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

Nginx + php5-fpmがあります。 1時間に数回、ウェブサイトがスタックし、ログファイルに次のように表示されます。

警告:[プール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、8 GHz 2.4 GHz、16 GB DIMM(DDR3)。

このサーバーのwww.confファイルに何を入れればよいかわかりません。誰かを助けてもらえますか?ありがとう

44
user1821484

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

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

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

41
replay

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

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

pm.max_requests = 500
21
Tom Jowitt

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

14
HTF