使用Booksleeve Redis的客戶端時,我最近開始舉辦的新Azure的虛擬機我的一個輔助項目。該應用程序使用Redis作爲內存中緩存。在我的本地環境中一切正常,但現在我已經將代碼移到Azure,我看到一些奇怪的例外從Booksleeve出來。Redis的連接錯誤在Azure中的VM
當應用程序第一次啓動時,一切正常。然而,在大約5-10分鐘不活動之後,對應用程序的下一個請求會遇到網絡異常(我現在正在工作,並且沒有關於我的確切錯誤消息,所以我會在我回家時發佈它們,如果人們認爲他們與討論密切相關)這會導致內部MessageQueue關閉,導致每個後續的Enqueue()都會引發異常(「The Queue Is Closed」)。
因此,一些谷歌上搜索後,我發現這個職位的SO:Maintaining an open Redis connection using BookSleeve約DIY連接管理器。如果這是最好的行動方式,我當然可以實現類似的東西。
所以,問題:
- 這是正常的RedisConnection到一定量的時間後定期關閉?
- 我見過
conn.SetKeepAlive()
方法,但我嘗試了許多不同的值,沒有一個看起來有所作爲。還有更多嗎?還是我吠叫錯了樹? - 上述處理此場景的最佳方式是來自帖子的連接管理器想法嗎?
- 任何人都可以擺脫爲什麼託管我的Redis實例在一個新的Azure虛擬機導致此問題的原因?我也可以確認,如果我對Azure Redis虛擬機運行本地環境,則會遇到此問題。
就像我說的,如果它是不尋常的Redis的連接不活動後死去,我將張貼堆棧跟蹤和異常從我的日誌,當我回家。
謝謝!
UPDATE 迪迪埃中,這可能涉及到的是Azure的使用負載balanacer評論中指出:http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details.aspx
假設是這樣的話,這將是實現一個連接管理器,可能最好的辦法解決這個愚蠢的問題。我認爲我不應該創建每個工作單位的連接權利?
你有什麼Redis配置文件的超時參數?這是空閒超時(將其設置爲0以避免Redis關閉空閒連接)。 –
超時已被設置爲0。只需再檢查一下。 :( – Eric
它似乎是AzureVM的「功能」...請參閱http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details .aspx –