Apache如何导致重复请求?

时间:2014-04-23 23:15:27

标签: ruby-on-rails apache nginx

我有两个可以互相交流的Rails应用程序。每天几次,应用程序A的请求在应用程序B中显示为重复(或一式三份/一式四份)。记录所有出站和入站请求。日志显示应用A正在发送一个出站请求,而应用B在同一秒内接收该请求两次或更多次。

App B位于Apache和Amazon Elastic Load Balancer之后。

我不确定在哪里查看,甚至不知道要问什么问题可以解决可能导致此问题的原因。如果您需要更多数据,我很乐意提供。

1 个答案:

答案 0 :(得分:2)

重试很可能来自Amazon Elastic Load Balancer或某些网络组件(例如路由器)。我在使用其他负载均衡器(如Citrix NetScaler)时也看到了类似的行为。

基本上,请求在请求链中的某个级别获得空闲超时。如果超时没有将正确的HTTP 5xx状态发送回客户端(例如它可能只是静默地关闭连接),那么超时源和客户端之间的任何组件都可能决定重试请求,具体取决于它们是如何配置的。

追踪导致重试的组件可能非常具有挑战性。我的建议是确保您的Rails应用程序始终能够快速响应。如果请求无法快速完成,请考虑后台/轮询解决方案或非HTTP通信方法(例如WebSockets)。