2013-05-20 83 views
3

是否對可在SQL Azure數據庫上建立的併發連接數有任何限制。 這是我面臨的情況: 我有一個網站託管在Windows服務器2008 R2虛擬機上,許多用戶將連接到該虛擬機,並在SQL Azure中創建數據庫。 我們發現,當併發連接數過多時,會出現連接丟失,這意味着與網站的正確用戶名和密碼的任何進一步連接都無法登錄。至少40分鐘後沒有用戶能夠登錄到該網站,之後相同的用戶名和密碼成功地將用戶登錄到網站。併發連接之後的SQL Azure連接問題

是這個限制問題,或者當多個用戶嘗試登錄並執行多個耗時的活動時實際發生的事情。 我可以採取什麼措施來解決這個問題。會話多個用戶打開導致此錯誤。請告訴我確切的事情和我需要採取的步驟,以避免這種情況。

回答

5

在數據庫中存在180個連接的硬限制。例如,當您開始達到此限制時,如果您還有一個重試框架,您會看到情況變得更糟,因爲它嘗試重新創建更多與SQL Azure的連接,從而增加您的問題。

你將開始看到這樣的錯誤:

異常類型信息:System.Data.SqlClient.SqlException 資源ID:1.數據庫的請求限制爲180°,已經達到了。請參閱'http://go.microsoft.com/fwlink/?LinkId=267637'尋求幫助。

http://social.technet.microsoft.com/wiki/contents/articles/1541.windows-azure-sql-database-connection-management.aspx#Throttling_Limits

這個最快的修復是嘗試和緩存的東西很多,並使用您的連接字符串最大池限制,如果你有很多的計算在前面嘗試。 (雖然這聽起來像你沒有)

Caching in Azure

其他方式來解決這個問題是分片你的數據庫,如果你不能降低高速緩衝存儲器中的連接限制,我建議做這個自定義過程而不是使用聯邦進行更多控制。

要想知道你沒有連接泄漏,並看看發生了什麼,我會看看this resource

HTHS,

詹姆斯

+0

我們也觀察到,如果一個虛擬機導致這方面的損失天青,連接到SQL Azure數據庫的其他虛擬機也將面臨連接loss.but它被通過整流本身約30-40分鐘後。這是如何發生的。 – kavitha

+0

我們在2個虛擬機上託管了網站,其中一個虛擬機的內存爲1GB,另一個虛擬機的內存爲4GB。作爲測試,我們使用JMeter運行樣本進行壓力測試,當我們遇到這個錯誤時,我們嘗試回收網站連接的應用程序池一切都立即得到修復。應用程序池與此有什麼關係。有沒有我錯過了IIS 7上的任何設置。 – kavitha

+0

@ kavitha值得看看顯示器連接,當你將負載放入系統時,看看這是否有問題,然後從那裏開始工作。也許還有別的東西會導致這個過程被扼殺。我會假設應用程序池的重新啓動會清除所有連接,包括重試會顯着降低數據庫上的負載。 – JamesKn