我们在 ELB 访问日志中看到了很多 408 超时。遇到过这个帖子 https://serverfault.com/questions/485063/getting-408-errors-on-our-logs-with-no-request-or-user-agent
还有 https://forums.aws.amazon.com/thread.jspa?messageID=307846
这些只是我发现的两个示例线程,但其他人提出了相同的解决方案,但并不高兴。
已将 Web 服务器超时设置为 < ELB 空闲超时,设为 = 并设为 > 比它,同样的结果,我们的日志被这些 408 污染了。一个更大的问题是,它们还会影响我们的 ELB 的平均延迟响应时间,而这正是我们触发自动缩放器的原因。
我们在后端实例上使用 Tomcat。 tomcat 上没有任何日志表明已收到请求,但 ELB 仍显示请求已超时。
在我们的 ELB 访问日志中,没有为 408 提供后端 IP,因此在我看来,请求根本没有到达实例,但亚马逊不同意:(。
有没有人遇到过这个问题并得到了可靠的解决方案?
最佳答案
关注 suggestion of milsonspt in the linked thread ,我向我的服务器添加了一个虚拟主机,它监视不同的线程而不是 80,因此所有运行状况检查都将在该主机上执行(将 CUSTOM_PORT 替换为要用于 ELB 运行状况检查的任何端口)。
Listen CUSTOM_PORT
<VirtualHost *:CUSTOM_PORT>
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log_elb_health_check_rotated_%Y-%m-%d-%H_%M_%S 10M" combined
</VirtualHost>
确保 ELB 执行 不是 在该端口上有一个监听器。
该配置删除了 408 错误并将所有健康检查记录在一个单独的日志中,因此您可以获得一个整洁的常规访问日志和一个用于健康检查的专用日志。
关于amazon-web-services - 我的 Amazon ELB 上的 408 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304680/