24

问题描述 - 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 多行。

对我来说,这看起来不是一个完整的解决方案。

4

4 回答 4

14

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

这些错误是完全正常的。它们不是更大问题的迹象,而是使 Apache 保持打开状态的正常连接时间超过允许的时间。

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

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

大多数情况下,这些错误来自寻找漏洞的系统,您可以通过打开 telnet 会话并使其保持打开状态来重新创建它。

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

在 Apache 1.3 的时代,这个错误很常见,但后来 2.2 出来了,他们把它删除了,直到我们有足够多的人要求它返回,因为它让我们知道有多少人保持开放的端口,并且不请求实际资源等

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

于 2013-03-11T07:01:44.583 回答
4

实际上 apache 日志中的大量 408 消息是现代浏览器中的结果预取机制。通过查看过去 3 年的 apache 日志,对于相同的流量,408 错误的数量增加了一倍以上。

于 2018-07-17T10:42:56.570 回答
0

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

于 2018-08-31T10:42:07.093 回答
0

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

于 2020-10-09T14:57:46.240 回答