ダイナミックプロセスマネージャでphp-fpmがワーカーをどのように管理しているかを明確にしたいと思います。php-fpmは動的プロセスマネージャを使用してワーカーをどのように管理しますか?
のは、我々が設定し、次のしていると仮定しましょう:
pm = dynamic
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
- のphp-FPMを開始し、それは接続がない30個のプロセス
- を生成します。 php-fpmは10人の従業員をシャットダウンしますmin_spare_servers?はいの場合、何時後になるのでしょうか?
- nginxには40の接続があります。 php-fpmは別のワーカーとのそれぞれの接続を提供し、すぐに残りの接続を満たす追加のワーカーを生成しますか?
- nginxには80の接続があります。 60人の労働者を立ち上げた後、php-fpmはどのように動作しますか? (3)と同じですか?
- nginxには120の接続があります。 100人の従業員を100人の接続先に割り当てた後はどうなりますか? php-fpmは接続にいくつかのキューを使用していますか?それはnginxを制限するのだろうか? php-fpmは "サーバがpm.max_children設定に達した"というメッセージで接続を切断しますか?
- nginxには50の接続があります。 nginxは100から60の接続に戻りますか?または50に?すぐに40人の労働者を殺すのか、それともしばらく待つのだろうか?
ご覧のように、これはかなりのphp-FPMは、プロセスを管理する方法についての一般的な質問です。具体的には、pm.max_childrenとpm.max_spare_serversの違いをphp-fpmで理解したいと思います。
詳細な回答ありがとうございます!あなたは5へのあなたの答えを明確にすることができますか?主に、php-fpmの待ち行列接続を行いますか、それともドロップしますか? –
ステータスページを有効にすると、キューに関連するデータを取得できます。 パラメータ 'listen queue len'は、キューに入れることができる最大接続数を定義します。この番号はプール設定で定義されます。 'listen.backlog'です。 php-fpmはファイル/ tcpソケットを使用しているので、この番号は '/ proc/sys/net/core/somaxconn'で定義されているシステム変数で制限されています。 – antonbormotov
キューがいっぱいになったら、今後のリクエストは拒否されます。 – antonbormotov