私たちは php-fpm をよく使用しますが、fpm に 3 つのモードがあることを誰もが知っているわけではありません。今日は Xiaonian が fpm の 3 つのモードについて説明します。必要な場合は参照してください。
; Choose how the process manager will control the number of child processes. ; Possible Values: ; static - a fixed number (pm.max_children) of child processes; ; dynamic - the number of child processes are set dynamically based on the ; following directives. With this process management, there will be ; always at least 1 children. ; pm.max_children - the maximum number of children that can ; be alive at the same time. ; pm.start_servers - the number of children created on startup. ; pm.min_spare_servers - the minimum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is less than this ; number then some children will be created. ; pm.max_spare_servers - the maximum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is greater than this ; number then some children will be killed. ; ondemand - no children are created at startup. Children will be forked when ; new requests will connect. The following parameter are used: ; pm.max_children - the maximum number of children that ; can be alive at the same time. ; pm.process_idle_timeout - The number of seconds after which ; an idle process will be killed. ; Note: This value is mandatory.
pm には、静的、動的、オンデマンドの 3 つのモードがあります
この方法は比較的単純です、起動時に、マスターは pm.max_children 設定に従って対応する数のワーカー プロセスをフォークアウトします。つまり、ワーカー プロセスの数は固定されています。
動的プロセス管理では、fpm の開始時に、pm.start_servers に従って最初に特定の数のワーカーを初期化します。
操作中に、アイドル状態のワーカーの数が構成された pm.min_spare_servers の数よりも少ないことをマスターが検出した場合 (リクエストが多すぎてワーカーが処理できないことを示します)、マスターはワーカーをフォークします。ただし、ワーカーの総数は pm.max_children を超えることはできません。
アイドル状態のワーカーの数が pm.max_spare_servers を超えていることをマスターが検出した場合 (アイドル状態のワーカーが多すぎることを示します)、リソースの過剰な占有を避けるために一部のワーカーが強制終了されます。これら 4 つの値を通じて労働者をサポートします。
このメソッドは通常、ほとんど使用されません。起動時にワーカー プロセスは割り当てられず、リクエストがあった後にマスター プロセスにワーカー プロセスをフォークするように通知されます。ワーカーが pm.max_children を超えない場合、ワーカー プロセスは処理完了後すぐに終了せず、アイドル時間が pm.process_idle_timeout を超えた後に終了します。
#FPM の信号処理pm.max_children: 静的モードで開かれた php-fpm プロセスの数。
pm.start_servers: 動的モードで開始する php-fpm プロセスの数。
pm.min_spare_servers: 動的モードでの php-fpm プロセスの最小数。
pm.max_spare_servers: 動的モードでの php-fpm プロセスの最大数。
php-fpm reload
php-fpm stop
新しいファイルを再利用し、ログの切断を完了します。
作業プロセスを再起動し、設定ファイルをリロードしますQ1: php-fpm プロセスを開始し、php-fpm マスター プロセス番号を強制終了した後、サービスは継続できますか? A: いいえ (すべての php-fpm プロセスがシャットダウンされます)
Q2: php-fpm プロセスを開始した後、-9 php-fpm マスター プロセス番号を kill します。サービスは継続できますか? A: はい (マスタープロセスのみが強制終了され、ワークプロセスはまだ動作しています)
Q2: php-fpm プロセスを開始した後、php-fpm ワークプロセス番号を強制終了しても、サービスは継続できますか? A: はい (ワークプロセスが強制終了された後、新しいワークプロセスが開始されます)
FPM のライフサイクル
php_module_startup()php ビデオ チュートリアルfcgi_accept_request()
php_request_startup()
fmp_request_executing()
php_execute_script ()
fpm_requset_end()
php_request_shutdown()
php_request_shutdown()
fpm は常駐プロセスなので、
の場合、サイクルは
推奨学習:fcgi_accept_request()
から開始されます。
以上がFPM のあまり知られていない 3 つのモードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。