向apache调度请求时出错

时间:2015-10-27 18:29:01

标签: php apache proxy lamp dispatch

我在Google上有云托管,说实话它很糟糕,但我想继续使用它,我在VM上安装LAMP堆栈并将我的网站放在htdocs中。当我尝试访问我的网站时,它会给我request timeout但有时会工作5分钟左右。

当我看到apache错误日志时,它给了我这个

075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.185819 2015] [proxy_fcgi:error] [pid 4995:tid 140183521683200] (70007)The timeout specified has expired: [client 162.158.255.169:34198] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.487458 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 4995 exit signal Segmentation fault (11)
[Tue Oct 27 18:12:55.787973 2015] [proxy_fcgi:error] [pid 5063:tid 140183530075904] (70007)The timeout specified has expired: [client 199.27.133.137:13151] AH01075: Error dispatching request to : (polling), referer: http://whichtube.com/watch/g9-4dCeFQng/allama-nasir-abbas-jawab-ali-as-nae-talwar-kayou-na-uthai.html
[Tue Oct 27 18:12:57.542883 2015] [proxy_fcgi:error] [pid 5329:tid 140183521683200] (70007)The timeout specified has expired: [client 173.245.56.198:51348] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:57.976752 2015] [proxy_fcgi:error] [pid 5063:tid 140183479719680] (70007)The timeout specified has expired: [client 173.245.56.198:63779] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:58.993666 2015] [proxy_fcgi:error] [pid 5194:tid 140183496505088] (70007)The timeout specified has expired: [client 162.158.255.141:16226] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:59.196701 2015] [proxy_fcgi:error] [pid 5329:tid 140183513290496] (70007)The timeout specified has expired: [client 173.245.56.198:32819] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:01.462039 2015] [proxy_fcgi:error] [pid 5329:tid 140183504897792] (70007)The timeout specified has expired: [client 199.27.128.166:48057] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:07.518999 2015] [proxy_fcgi:error] [pid 5063:tid 140183471326976] (70007)The timeout specified has expired: [client 173.245.56.198:13694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:16.804990 2015] [proxy_fcgi:error] [pid 5261:tid 140183513290496] (70007)The timeout specified has expired: [client 199.27.128.134:28694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:33.055860 2015] [proxy_fcgi:error] [pid 5328:tid 140183236331264] (70007)The timeout specified has expired: [client 39.41.139.220:52154] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.391361 2015] [proxy_fcgi:error] [pid 5063:tid 140183521683200] (70007)The timeout specified has expired: [client 39.41.139.220:52029] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.552542 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 5063 exit signal Segmentation fault (11)

我的网站是用PHP编写的,除了目录权限之外,我还没有改变任何其他内容,是否有我遗漏的内容?

6 个答案:

答案 0 :(得分:2)

我也有这个问题。您可能希望在代码中查找硬代码部分以及与另一个不可用服务器的连接。 (例如,无法在线访问的本地IP)。

对于我的,我检查了我的服务器上的php-fpm.log,我发现我的应用程序正在尝试连接到旧服务器(错误的IP),并且面临超时。

答案 1 :(得分:1)

对我来说,重新启动php-fpm可以完成这项工作。在按照@varlogtim的建议查看日志后。日志显示最近12个小时没有任何活动...

答案 2 :(得分:0)

您的PHP代码似乎需要比配置的超时更长的时间才能完成。当apache使用fcgi加载PHP页面时,它会向PHP-FPM服务发送请求以进行处理。如果PHP-FPM需要很长时间才能响应,那么您将看到这种类型的超时。可能的原因是您的PHP代码可能陷入循环或等待数据库的响应需要特别长的时间。

要进行故障排除我会使用CLI的CLI版本来查看脚本是否在合理的时间内完成($ time php /path/to/file.php)。 PHP-FPM日志中可能还有其他信息(默认值:/var/log/php-fpm.log)。

答案 3 :(得分:0)

我遇到了同样的问题,事实证明Apache有一个名为mod_reqtimeout

的模块来处理超时。

默认值(您不会在默认http.conf中看到它)是

RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500

在我的情况下,我是通过纯HTML表单提交上传文件的,因此该文件从技术上讲是标题的一部分,默认配置是标题会在20到40秒时超时。 20-40的内容非常酷,因为它将在20秒后超时,但是如果在一秒钟内发送500字节,它将增加另外一秒的等待时间,直到达到40秒,然后无论如何都将超时。

我在网站上上传了较大的文件,因此我将此行添加到了httpd.conf文件中:

RequestReadTimeout handshake=0 header=20-600,MinRate=500 body=20,MinRate=500

只要我的用户以最小500字节/秒的速度发送数据,请求就不会超时,直到最大速度。达到600秒(最好阅读文档,不要在吞吐率上引用我)

这实际上是一个非常酷的Apache模块,但并不是超级知名,因为人们建议在其他类似的“指定的超时时间已到期:”中更改其他apache超时设置。问题与PHP-FPM有关,但任何需要此操作的帖子都会发生此问题默认情况下,要在Apache中提交的时间超过40秒。

答案 4 :(得分:0)

我遇到了同样的问题,就我而言,此解决方案有效:

  • 增加位于我的request_terminate_timeout/etc/php-fpm.d/www.conf个文件。

注意:此选项会覆盖php max_execution_time ini选项,并为其设置一个较低的值可能会给您带来很多麻烦,因为它将覆盖其他选项并强行终止请求超时是否过期。 (如果您询问要设置哪个值,那应该是根据您的需要的最大脚本处理时间,但通常600s(10分钟)或10m(10分钟)要多得多。)

答案 5 :(得分:0)

我在Centos 7上遇到了同样的问题:SELINUX的问题。 您可以暂时禁用SELINUX进行检查: sudo setenforce 0