![FcgidProcessLifeTime 没有效果](https://linux22.com/image/591245/FcgidProcessLifeTime%20%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C.png)
我正在运行 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 应用程序的标准方式。