2014-04-23 53 views
7

我有兩個相互交談的Rails應用程序。每天幾次,應用程序A的請求會在應用程序B中顯示爲一式兩份(或一式三份/一式四份)。所有出站和入站請求都會被記錄下來。日誌顯示應用程序A正在發送一個出站請求,並且該應用程序B在同一秒內收到該請求兩次或更多次。Apache如何導致重複請求?

應用程序B位於Apache和Amazon Elastic Load Balancer之後。

我不知道在哪裏看,甚至要問什麼問題來磨合可能導致此問題的原因。如果您需要更多數據,我會很樂意提供。

回答

1

重試很可能會從Amazon Elastic Load Balancer或某個網絡組件(例如路由器)中傳出。在使用其他負載均衡器(如Citrix NetScaler)時,我也看到了類似的行爲。

基本上,請求在請求鏈的某個級別獲得空閒超時。如果該超時不會將正確的HTTP 5xx狀態發送回客戶端(例如,它可能只是靜默地關閉連接),那麼超時源和客戶端之間的任何組件都可能決定重試請求,具體取決於它們的方式已配置。

追蹤哪些組件導致重試可能非常具有挑戰性。我的建議是確保你的Rails應用程序總是快速響應對方。如果請求無法快速完成,請考慮使用後臺/輪詢解決方案或非HTTP通信方法(例如WebSockets)。