加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – mod_fcgid:读取数据超时错误

发布时间:2020-12-13 13:56:24 所属栏目:PHP教程 来源:网络整理
导读:我转移到使用fcgid的非托管服务器(在我使用mod_php之前),在错误日志中我看到了大量此类错误: [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.6
我转移到使用fcgid的非托管服务器(在我使用mod_php之前),在错误日志中我看到了大量此类错误:

[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连接

这些错误意味着脚本的运行时间超过31秒,因此它们被终止,因为你的fcgid.conf是这样说的.标准超时是40秒btw.

您可以通过编写test.php轻松检查此行为:

<?php sleep(32); ?>

这应该会给您一个错误500并将此错误放在您的日志中.

您有两种可能性来解决这个问题:

>重新制作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来杀死所有正在运行的进程,这样他们就可以获得新的配置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读