![php5-fcgid.conf 配置后,服务器每 10 分钟停止响应一次,为什么?](https://linux22.com/image/601640/php5-fcgid.conf%20%E9%85%8D%E7%BD%AE%E5%90%8E%EF%BC%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%AF%8F%2010%20%E5%88%86%E9%92%9F%E5%81%9C%E6%AD%A2%E5%93%8D%E5%BA%94%E4%B8%80%E6%AC%A1%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我安装了 PHP5-CGI、Apache 和 MYSQL。在添加这些设置之前,PHP5-CGI 会无休止地拥有超过 15 个进程,每个进程都会占用 5 MB 的内存。因此,我将这些设置添加到 /etc/apache2/conf.d/php5-fcgid.conf,PHP5-cgi 进程受到限制。但是,现在,每次我在 4 或 5 分钟内打开 20 个线程/页面时,服务器就会停止正常运行,一切都会冻结,页面停止加载,直到 2 或 3 分钟过去后,它又会像闪电一样快速运行。
AddHandler fcgid-script .fcgi .php
# Where to look for the php.ini file?
DefaultInitEnv PHPRC "/etc/php5/cgi"
# Where is the PHP executable
FCGIWrapper /usr/bin/php-cgi .php
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1500
# Maximum number of PHP processes.
MaxProcessCount 15
# Number of seconds of idle time before a process is terminated
IPCCommTimeout 240
IdleTimeout 240
# Large site
ServerLimit 2048
ThreadLimit 100
StartServers 10
MinSpareThreads 30
MaxSpareThreads 100
ThreadsPerChild 64
MaxClients 2048
MaxRequestsPerChild 5000
我正在运营一个网站(smf 论坛),平均每 20 分钟有大约 450 名用户访问,因此有点忙乱。那么,发生了什么事?
答案1
我马上看到的第一件事是,你的代码FCGIWrapper
看起来像是实际的php-cgi
可执行文件,而不是一个包装脚本,它配置了 PHP 期望的环境变量,其值将与 一起使用fcgid
。默认情况下,PHP 在 500 个请求后退出,但你让 fcgid 期望它们持续 1500 个。你可以在以下位置找到示例和解释Apache 的文档但基本上您需要将PHP_FCGI_MAX_REQUESTS
环境变量设置为php-cgi
大于MaxRequestsPerProcess
fcgid 正在使用的设置。
你可以跳过包装脚本,直接DefaultInitEnv PHP_FCGI_MAX_REQUESTS 1501
在 Apache 配置中使用
此外,您的配置很旧,所有指令名称已改变但旧的还可以用目前。