我们的AWS EBS实例中的elasticbeanstalk-access_log日志文件充满了408个错误,如下所示:
172.31.1.56 (-) - - [16/Mar/2016:10:16:31 +0000] "-" 408 - "-" "-"
172.31.1.56 (-) - - [16/Mar/2016:10:16:31 +0000] "-" 408 - "-" "-"
172.31.1.56 (-) - - [16/Mar/2016:10:16:31 +0000] "-" 408 - "-" "-"
172.31.1.56 (-) - - [16/Mar/2016:10:16:31 +0000] "-" 408 - "-" "-"
172.31.1.56 (-) - - [16/Mar/2016:10:16:31 +0000] "-" 408 - "-" "-"
172.31.1.56 (-) - - [16/Mar/2016:10:16:59 +0000] "-" 408 - "-" "-"它们随机出现,有时它们之间有几分钟的间隔,有时在几秒钟内有4-6个错误。当服务器上没有任何实际流量时,这些错误也会在我们的非公共过渡环境中发生,因此这些请求的来源可能是AWS自己的服务之一。
发布于 2018-06-28 00:26:49
我遇到了类似的问题: AWS Elastic Beanstalk上的HTTP错误代码408。为了解决这个问题,我不得不实现的解决方案是将Classic LB本身上的实例端口和协议更改为80和HTTP。
最初,端口和协议都设置为443和HTTPS。因此,确保将实例端口和协议设置为80,即使LB端口和协议设置为443和HTTPS也是如此。
发布于 2017-11-11 18:58:21
编辑:你们有经典的负载均衡器吗?通过使用Elastic Beanstalk cli创建新环境并选择应用程序负载均衡器,切换到应用程序负载均衡器。这将解决这个问题。
ELB有一种称为预开连接的机制。ELB这样做是为了更快地处理您的请求,也就是说,在请求发送到后端之前,您的新请求不必在ELB等待打开与后端的新连接所需的额外时间。如果您有较低的keep-alive超时,会导致预先打开的连接更快地关闭,这将使您的后端生成408错误响应,指示连接已关闭,因为客户端( ELB )超时到期,而ELB没有在该特定连接上发送任何请求。
如果修改了ELB空闲连接超时,则需要确保http keep-alive超时值大于ELB空闲连接超时值。如果不是这样,请启用keep alive Timeouts值,并确保该值大于ELB空闲连接超时。
您可以通过以下代码在ebextensions文件夹中添加一个.config文件来更改apache中的保持连接超时:
files:
"/etc/httpd/conf.d/keepalive.conf" :
mode: "000644"
owner: root
group: root
content: |
# Enable TCP keepalive
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 300
<IfModule mod_reqtimeout.c>
RequestReadTimeout header=300 body=300
</IfModule>发布于 2016-04-24 07:09:46
我们面临着同样的问题,在this AWS forum thread底部提出的建议解决了它。简而言之,您应该确保弹性负载均衡器上的空闲时间configured略低于为每个实例上运行的Apache httpd配置的空闲timeout。
https://stackoverflow.com/questions/36174919
复制相似问题