【问题标题】:How might Apache cause duplicate requests?Apache 如何导致重复请求?
【发布时间】:2025-12-03 00:50:02
【问题描述】:
我有两个相互通信的 Rails 应用程序。每天有几次,来自应用 A 的请求会在应用 B 上重复(或三次/四次)显示。所有出站和入站请求都会被记录下来。日志显示应用 A 正在发送一个出站请求,而应用 B 在同一秒内收到该请求两次或更多次。
应用 B 位于 Apache 和 Amazon Elastic Load Balancer 之后。
我不知道该去哪里寻找,甚至不知道要问什么问题来深入了解可能导致此问题的原因。如果您需要更多数据,我很乐意提供。
【问题讨论】:
标签:
ruby-on-rails
apache
nginx
【解决方案1】:
重试可能来自 Amazon Elastic Load Balancer 或某些网络组件(例如路由器)。我在使用其他负载均衡器(如 Citrix NetScaler)时也看到了类似的行为。
基本上,请求会在请求链中的某个级别获得空闲超时。如果该超时未将正确的 HTTP 5xx 状态发送回客户端(例如,它可能只是静默关闭连接),则超时源和客户端之间的任何组件都可能决定重试请求,具体取决于它们的方式已配置。
追踪导致重试的组件可能非常具有挑战性。我的建议是确保您的 Rails 应用程序始终能够快速相互响应。如果请求无法快速完成,不妨考虑使用后台/轮询解决方案或非 HTTP 通信方法(例如 WebSockets)。