私は実行していますPHPハンドラーfcgid
LoadModule fcgid_module modules/mod_fcgid.so
FcgidMaxRequestsPerProcess 3000
FcgidMaxProcesses 3000
FcgidMaxProcessesPerClass 16
FcgidMinProcessesPerClass 1
FcgidProcessLifeTime 7200
FcgidIOTimeout 180
IPCConnectTimeout 60
FcgidIdleTimeout 600
FcgidIdleScanInterval 30
FcgidBusyTimeout 3600
FcgidBusyScanInterval 30
FcgidErrorScanInterval 3
FcgidZombieScanInterval 3
FcgidFixPathinfo 0
FcgidMaxRequestInMem 419430400
FcgidMaxRequestLen 1073741824
プロセスは10分以上ごとに終了します。また、FcgidProcessLifeTime 7200
を設定します。
私もmpm_worker
を使用しています:
Timeout 50
<IfModule worker.c>
StartServers 16
ServerLimit 1800
MaxClients 1728
MinSpareThreads 75
MaxSpareThreads 250
ThreadLimit 600
ThreadsPerChild 64
MaxRequestsPerChild 10000
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5
</IfModule>
プロセッサー:デュアルIntel xeon E5630、RAM:32GB DDR3、PHPv5.3.14
どうすればこの問題を解決できますか?プロセスの寿命を維持します。
これは非常に古い質問ですが、最近これに対処する必要がありました。
FcgidIdleTimeout 600
があります。
これは、プロセスが10分間アイドル状態の場合、FcgidProcessLifeTime
に何を設定したかに関係なくプロセスが終了することを意味します。
これはテストしていませんが、確認したい場合は、FcgidMaxProcessesPerClass 1
を設定して、5分ごとにリクエストを送信できます。これにより、このプロセスはFcgidProcessLifeTime
の間アイドル状態になることはないため、FcgidIdleTimeout
の間維持されます。
したがって、最適化された構成は作業負荷によって異なります。
Mod_fastcgiまたはmod_proxy_fcgiを使用してphp-fpmに切り替えることをお勧めします(Aapache 2.4が必要です)。 PHP-FPMは独自のプロセス管理を行い、サイトに適したさまざまなプロセスマネージャーを選択することもできます。
php-fpmは、phpアプリをデプロイするための標準的な方法になりつつあります。