web-dev-qa-db-ja.com

FcgidProcessLifeTime効果なし

私は実行しています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

どうすればこの問題を解決できますか?プロセスの寿命を維持します。

2
Linux Intel

これは非常に古い質問ですが、最近これに対処する必要がありました。

FcgidIdleTimeout 600があります。

これは、プロセスが10分間アイドル状態の場合、FcgidProcessLifeTimeに何を設定したかに関係なくプロセスが終了することを意味します。

これはテストしていませんが、確認したい場合は、FcgidMaxProcessesPerClass 1を設定して、5分ごとにリクエストを送信できます。これにより、このプロセスはFcgidProcessLifeTimeの間アイドル状態になることはないため、FcgidIdleTimeoutの間維持されます。

したがって、最適化された構成は作業負荷によって異なります。

1
jeffatrackaid

Mod_fastcgiまたはmod_proxy_fcgiを使用してphp-fpmに切り替えることをお勧めします(Aapache 2.4が必要です)。 PHP-FPMは独自のプロセス管理を行い、サイトに適したさまざまなプロセスマネージャーを選択することもできます。

php-fpmは、phpアプリをデプロイするための標準的な方法になりつつあります。

0
ah83