FcgidProcessLifeTime 没有效果

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

我怎样才能解决这个问题?并保持流程寿命。

答案1

这是一个非常老的问题,但最近必须解决这个问题。

你有FcgidIdleTimeout 600

这意味着如果一个进程空闲 10 分钟,它将被终止,无论您设置了什么FcgidProcessLifeTime

我没有测试过,但如果你想确认,你可以设置FcgidMaxProcessesPerClass 1然后每 5 分钟发送一次请求。这应该可以让这个过程持续一段时间,FcgidProcessLifeTime因为它永远不会闲置FcgidIdleTimeout

因此,优化的配置将取决于您的工作量。

答案2

我建议切换到带有 mod_fastcgi 或 mod_proxy_fcgi 的 php-fpm(需要 Aapache 2.4)。PHP-FPM 进行自己的进程管理,您甚至可以选择适合您站点的不同进程管理器。

php-fpm 越来越成为部署 php 应用程序的标准方式。

相关内容