Apacheがmod-phpのプロセスをフォークするとき、それはどのくらいの期間存続しますか?プロセスは応答が送信されるとすぐに終了しますか、それともブラウザが完全な応答を受信するまで存続しますか?
Apacheがmod-phpのプロセスをフォークするとき、それはどのくらいの期間存続しますか?プロセスは応答が送信されるとすぐに終了しますか、それともブラウザが完全な応答を受信するまで存続しますか?
回答:
mod-phpを使用している場合は、prefork
MPM を使用している可能性があります。これは、リクエストを処理するために子プロセスを生成します。メインapache2.conf
(またはhttpd.conf
ディストリビューションによって異なります)ファイルのディレクティブによって管理されるこれらの子の数と寿命。
次のような部分を探します(値は異なる場合があります)。
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
ApacheはStartServers
自動的に子を生成します。これらのプロセスは、リクエストが届くまでアイドル状態になります。子プロセスがビジーになるとMaxClients
、ロードを処理するために子プロセスまで生成され、MinSpareServers
アイドル状態の子を維持して新しいリクエストを取得しようとします。物事が落ち着くと、カウントがになるまで、アイドル状態の子供は殺されMaxSpareServers
ます。
あなたが尋ねているビットはによって処理されMaxRequestsPerChild
ます。0に設定すると、子供は永遠に生きることができます。これは、ほとんどのApacheインストールのデフォルト値です。それ以外の値に設定すると、その数の要求を処理すると、現在の負荷に関係なく、各子プロセスが強制的に強制終了され、再起動されます。
ここのprefork MPMの詳細:http : //httpd.apache.org/docs/2.2/mod/prefork.html
httpdはmod_phpのプロセスをフォークしません。mod_phpが埋め込まれたプロセス自体をforkします。子は、MaxRequestsPerChild
要求が満たされるまで生き続けます。mod_php自体は、スクリプトが終了するか制限時間を超えるまで、PHPスクリプトの各リクエストを処理し続けます。