IIS(亚马逊)上的504(网关超时)期间IIS重新处理相同的请求

时间:2014-07-25 05:23:44

标签: asp.net-mvc http amazon-web-services iis-7 amazon-elb

设置如下=>

有一个Amazon ELB(Elastic Load Balancer)将请求转发给IIS。 ELB的超时设置为15秒。

如果Web服务器需要15秒以上的时间来处理请求,我会发现两种行为。

1)有时,在15秒标记处,向客户端(浏览器)发出504(网关超时)。这种行为我理解并且是预期的。

2)但是,有时,在15秒标记处,Web服务器(IIS)从头开始再次重新处理相同的请求。没有向客户端发出504(网关超时)。这个行为,我不明白。我使用ASP.NET MVC堆栈。

我知道来自客户端的相同请求,因为客户端生成的id对于请求保持相同。但是请求有一个新的服务器生成的id。在某些情况下,某些中介(ELB)似乎在超时(15秒)标记处重新发送请求。

有没有人对可能导致的原因有什么见解(2)?

1 个答案:

答案 0 :(得分:1)

听起来你正在处理这个问题:

http://absenceofblue.blogspot.com/2013/08/retry-hassles-with-elb.html

据说它已修复,但显然如果你的后端超时与ELB超时相同,则可能存在竞争条件,因此你应该将超时设置为比ELB超时至少1秒,以便ELB转储连接,而不是你的代码。

有趣的是,重试DOES实际上来自客户端,但这是因为客户端的TCP堆栈被认为数据包被丢弃,因此它会在TCP级别重试数据包。