昨天凌晨 1 点左右,我们的服务器陷入瘫痪。这种情况并不常见,但我正在努力找出原因。
没有异常的流量,也没有异常的进程运行,只是服务器突然开始杀死 fcgid 进程。
[Thu Aug 02 01:17:32 2012] [warn] mod_fcgid: process 26460 graceful kill fail, sending SIGKILL
... 对于我们拥有的尽可能多的 fcgid 进程...
CPU 空闲率降至 0%,I/O 似乎占据了大部分负载。此问题持续了大约 5 分钟。
我怀疑存在一些交换活动,尽管我不确定这是否是由于被杀死的进程被交换进来而导致死亡,或者是因为某些进程增加内存使用的速度比我的进程观察脚本能看到的速度更快。
oom-killer 没有被触发(至少没有记录),所以我认为这是 Apache 出于某种原因重新启动了进程。这不正常,cron 中也没有出现任何明显异常。
是否有正常的 Apache 进程可能导致此问题?我们运行着几十个不同的网站,当时已经是深夜,因此请求量非常非常低。(10 分钟内可能只有 200 个请求)。
答案1
修改此文件 /etc/httpd/conf.d/fcgid.conf 并将 FcgidIOTimeout 更改为
FcgidIOTimeout 90
这个对我有用。
谢谢 JD
答案2
我遇到了我的问题,错误主要是因为 mod_fastcgi 超时,解决方案放在这里,对我来说有解决方案:
修改此文件/etc/httpd/conf.d/fcgid.conf并改变,故障转移IDIO超时到
FcgidIO超时500
然后重新启动 apache:
在/usr/sbin/apachectl 重新启动
答案3
使用 Ubuntu Server 和 Webmin/Virtualmin 的服务器管理员可以通过编辑文件来解决此问题fcgid.conf
。以下说明适用于 Ubuntu Server,如果您使用不同的 Linux,则配置的位置可能会有所不同。
只需 6 个简单步骤即可解决此问题
- 登录 SSH。
- 输入
cd /etc/apache2/mods-enabled
并按回车键。 - 输入
sudo pico fcgid.conf
并按回车键。 - 找到带有 的行
FcgidConnectTimeout 20
并将其更改为FcgidConnectTimeout 120
。 - 通过执行
CTRL+X
或退出 picoCMD+X
,然后按Y
保存。 - 输入:
sudo service apache2 restart
并按回车键。
如果问题仍然存在,那么您可以将 120 增加到更高的数字。
提示:使用Pingdom(免费)当网站无法访问时通知您。
答案4
几天前我遇到了同样的问题。我找到了一篇博客文章,其中有人删除了 Webmin 和 Usermin,发现他们不再收到错误。
我升级了 Webmin,它似乎解决了我的问题。我仍然会遇到一些错误,但它不会像以前那样堵塞 CPU。