[Mon Apr 23 21:17:12 2012] [warn] [client 66.249.68.233] mod_fcgid:
read data timeout in 31 seconds [Mon Apr 23 21:17:12 2012] [error]
[client 66.249.68.233] Premature end of script headers: index.PHP[Mon Apr 23 17:59:51 2012] [warn] [client 74.117.180.58] mod_fcgid:
read data timeout in 31 seconds [Mon Apr 23 17:59:51 2012] [warn]
[client 74.117.180.58] (110)Connection timed out: mod_fcgid:
ap_pass_brigade Failed in handle_request_ipc function
在备份期间负载较高(2-3)时似乎有更多这些,并且我甚至设法在备份期间运行tar / mysqldump时在3的负载期间复制它(用户在看到500错误消息之后30秒).服务器可能会超载吗?
这个问题似乎与PHP + Fcgid hangs if download interrupted有关但不一样.
这是一个顶级的服务器,我很惊讶这将是太多了.以下是一些规格:
6-7使用Webmin的Drupal站点
>Intel®Core™i7-2600 Quadcore incl.超线程技术
> RAM 16 GB DDR3 RAM
>硬盘2 x 3 TB SATA 6 Gb / s HDD 7200 rpm(软件-RAID 1)
> NIC1 Gbit OnBoard以100 Mbit连接
您可以通过编写test.PHP轻松检查此行为:
<?PHP sleep(32); ?>
您有两种可能性来解决这个问题:
>重新制作index.PHP(或后面的应用程序)并解决潜在的循环问题(脚本永远运行并在31秒后终止).
>设置更高的超时.必须为每个vhost执行此操作(不要忘记SSL!),因为此设置在每次加载另一个vhost时都会更改,并将一直保留到生成的进程终止.
最简单的方法是编辑/etc/apache2/mods-available/fcgid.conf.这就是我们正在使用的:
IdleTimeout 3600
ProcessLifeTime 7200
IPCConnectTimeout 8
IPCCommTimeout 600
BusyTimeout 300
编辑:哦,第二个错误与URL中过长的查询字符串有关.要允许更长的查询字符串,还要编辑fcgid.conf并插入
MaxRequestLen 15728640
不要忘记重新启动apache来杀死所有正在运行的进程,这样他们就可以获得新的配置.