一年之后我也遇到了同样的问题,然后我尝试了许多事情,最后我在文档阅读后完成了一些打击和运行的事情,我的问题消失了.首先需要设定的重要事项如下:
FcgidBusyTimeout 300 [default]
FcgidBusyScanInterval 120 [default]
该指令的目的是终止挂起的应用程序.对于可能需要更长时间来处理请求的应用程序,可能需要增加默认超时.因为检查是按照FcgidBusyScanInterval定义的间隔执行的,因此可以允许请求处理进行一段较长的时间
FcgidProcessLifeTime 3600 [default]
如果该类的进程数超过了FcgidMinProcessesPerClass,那么已经存在大于此时间的空闲应用程序进程将被终止.
此过程生命周期检查以配置的FcgidIdleScanInterval的频率执行.
FcgidZombieScanInterval 3 [seconds default]
该模块以此间隔检查退出的FastCGI应用程序.在这段时间内,应用程序可能作为僵尸(在Unix上)存在于进程表中.
注意:所有上述选项根据您的应用程序进程时间减少或增加或需要或应用于特定的虚拟机.
但是我的问题通过这个选项来解决:
以上选项已经调整了我的服务器,但经过一段时间后,错误似乎再次出现,但是错误真的是由此解决的:
FcgidOutputBufferSize 65536 [default]
我已经改变了
FcgidOutputBufferSize 0
这是在将数据刷新到客户端之前,模块将从FastCGI应用程序读取的最大响应数据量.这将立即刷新数据,而不是等待64KB的字节,这真的帮助我更快地刷新流程.
我遇到的其他问题
如果500错误来自Nginx超时.修复:
/etc/nginx/nginx.conf
keepalive_timeout 125;
proxy_read_timeout 125;
proxy_connect_timeout 125;
fastcgi_read_timeout 125;
间歇地,我会得到MySQL“MySQL服务器已经消失”的错误,这需要一个更多的调整:
/etc/my.conf
wait_timeout = 120
然后,只是为了好玩,我继续提高了我的PHP内存限制,以防万一:
/etc/php.ini中
memory_limit = 256M
使用SuExec
在Apache 2.x上的SuExec下,mod_fastcgi根本不起作用.我没有什么麻烦(它也有许多其他问题在我们的测试).你的问题的真正原因是SuExec
在我的情况下,这是一个启动我,我启动Apache,mod_fcgid为每个vhost产生5个进程.现在,当使用简单的上传脚本并提交大于4-8KB的文件时,所有这些子进程将一次性针对执行脚本的特定虚拟机进行杀死.
可能会调试构建或启动登录mod_fcgid,这可能会给出一个线索.
我在同一时间里尝试了一年的mod_fastcgi,我也可以和许多人说,SuExec在任何情况下都是麻烦的,运行不顺利.