用PHP理解Apache上的“408 Request Timeout”

时间:2013-02-26 13:54:13

标签: php apache2 http-error http-status-code-408

问题说明 - Apache日志

我在Apache日志文件中找到了与此类似的项目:

166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"

我有自定义日志格式,此处408代表状态。日志格式为:

LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed

通常日志文件中的行看起来像

184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"

这就是408错误行对我来说很奇怪的原因。没有记录请求,我不知道应该优化什么。

问题

如何解决这个问题? 我应该收集哪些其他信息或日志? 什么可能导致这个问题?这是服务器上的错误吗?或者这绝对是一个网络连接问题?

我正在解决这个问题,因为我们的客户抱怨他的手机上有408错误。我在日志文件中找到了很多记录,但我不得不承认我不知道如何处理这个。


我自己的研究

这里有几个关于这个问题的问题。但人们更加具体。就像他们讨论某些特定客户端软件和脚本的问题一样。这里我在iPhone上打开一些页面时遇到错误。

例如在HTTP, 408 Request timeout中,建议在POST之前执行GET请求。如果我有自定义客户端,我可以这样做。但我无法控制用户浏览器的行为。

猜#1

在搜索互联网并思考问题时,我发现https://serverfault.com/questions/383290/too-many-408-error-codes-in-access-log

建议将Timeout配置参数更新回默认值。

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

我首先尝试了30,因为我认为30秒就足够了。 但即使默认值为300秒,我仍然会在日志中收到错误。我在写这篇文章时做了tail -f并在几分钟内得到了10行以上。< / p>

对我而言,这看起来并不完整。

4 个答案:

答案 0 :(得分:11)

经过一些关于这个问题的研究后,我得出了以下答案。它由我们的首席开发人员提供,我认为它可以很好地解释这个主题。

这些错误完全正常。它们并不是更大问题的标志,而是正常连接使Apache打开的时间超过允许的时间。

例如,客户端一遍又一遍地运行它们的查询使Apache保持打开状态。阿帕奇通过恰当地关闭他来做出回应。

如果没有,可能会有少数人接管我们的服务器并且不允许任何其他人连接。

这些错误通常来自寻找漏洞的系统,您可以通过打开telnet会话并将其打开来重新创建它。

同时,尾随-f访问日志,在X时间内(KeepAliveTimeout),你会看到你的IP弹出窗口有相同的错误代码。

回到Apache 1.3的时代,这个错误很常见,但是2.2出来了,他们把它删除了,直到我们要求它被退回,因为它给了我们关于有多少人持开放的想法端口,而不是请求实际资源等。

我认为除了确保将Timeout设置为原始问题中描述的某个合理值之外,此处不应该做任何其他事情。

答案 1 :(得分:0)

实际上,apache日志中有很多408条消息是现代浏览器中的一种结果预取机制。 从最近3年的apache日志来看,相同流量的408个错误的数量增加了一倍以上。

答案 2 :(得分:0)

如果在Apache中设置了代理,并且由于某种原因后端没有及时响应,则在日志中会看到相同的408--。代理超时是单独配置的,这就是为什么更改Apache默认超时似乎对那些请求没有任何作用的原因。

答案 3 :(得分:0)

所有http请求均支持用户名和密码。没有用户名=“-”,没有密码=“-”,密码=“ *”。