2015-10-07 25 views
0

我有一個Rails應用程序,當我們收到幾秒鐘內大量的ping從上過去的交易報告的外部服務的網絡掛接,可以輕鬆地處理業務,我們目前的經驗,除了一次一天。目前,由於缺乏數據庫連接可用性,這會導致應用程序超時,這意味着我們會丟失一些webhook並將網站關閉幾秒鐘。這不是重要的是包含在這些網絡掛接的數據立即處理,所以我找了一個很好的方式傳播出去的迴應,而不是做一個昂貴的升級只是爲了處理這些突發額外的數據庫連接能力。如何從webhook響應中分散我的rails應用程序中的負載?

是否還好,只是有相關的控制方法的睡眠做任何會打開一個數據庫連接進行傳播的東西出來之前,小,亂的秒數?還是有更好的方法來做到這一點?

+0

怎麼樣一個負載均衡?像nginx的東西? – sircapsalot

+0

每個請求是否有唯一的響應,或者這是可以緩存的東西?讓你的控制器進入睡眠狀態將會阻礙網絡進程,這通常是非常不可取的。如果請求使用大部分相同的數據,則可以使用模型緩存,例如Redis或Memcached。 – max

+0

@sircapsalot負載平衡器倘使反應是可緩存 - 但是如果你有許多服務器,它們都使用薩姆斯數據庫那麼這將是的瓶頸,即使請求傳遞到多個網絡的過程。 – max

回答

1

設置背景/異步處理系統等Sidekiq(或任何的Heroku提供)。修改你的控制器動作,不做任何事情,但將參數推入後臺作業並返回「ok」。然後在後臺處理作業。

相關問題