web-dev-qa-db-ja.com

php-fpm:接続をより速く受け入れるためのボトルネックは何ですか?

Php5-fpmステータスページで、サーバーが新しいソケットを十分に速くaccept()するのを妨げているボトルネックは何ですか?

_pool:                 www
process manager:      static
start time:           20/Jan/2015:16:37:18 +0000
start since:          176705
accepted conn:        903749
listen queue:         0
max listen queue:     129
listen queue len:     128
idle processes:       59
active processes:     69
total processes:      128
max active processes: 128
max children reached: 0
_

ご覧のとおり、リッスンキューに到達しましたが、これは非常に頻繁に発生します。リッスンキューの背後にある基本的なロジックを理解しており、ここで詳細に説明されています: php-fpmステータスページ:このレポートの「キュー」項目は何ですか?

キューの長さを増やす必要があることを認識し、そうします。しかし、私の質問はなぜが私のリッスンキューがいっぱいになるのか、そしてそもそもそれがいっぱいになるのを防ぐためのボトルネックは何ですか?リッスンバックログが大きい場合は、「追いついていない」ものが必要だと思いますか?これはCPUのボトルネック/負荷の問題であり、accept()の速度が十分ではありませんか?

2
A.B. Carroll

受信しているトラフィックに対して十分なPHPワーカープロセスがないようです。

明らかな解決策は次のとおりです。

  1. より多くの合計プロセスを可能にします。ただし、これを処理するにはCPUとRAM)が必要であり、使用可能なリソースや消費された量については何も言わなかった。
  2. アプリケーションの実行速度を上げます。プログラミングの改善、ページキャッシュとオペコードキャッシュの適切な使用など。
3
Michael Hampton