2012-09-12 76 views
1

我試圖解決使用MySQL連接器打開連接時MySQL的響應時間很長的問題。使用MySQL連接器打開MySQL連接的速度很慢.net

我已經使用--skip-name-resolve安裝了運行在Azure VM(Server 2008)上的MySQL 5.5,並且數據庫用戶帳戶的主機限制使用了IP地址。我在Azure上運行的WCF服務中使用最新的MySQL連接器(在美國東部的相同位置,我一直使用試用訂閱,沒有關聯集)。我在WCF服務中的連接字符串使用託管MySQL的VM的內部IP地址作爲服務器參數值。我也有「pooling = true;最小池大小= 2;」以防萬一(我也試過沒有這些參數)。

一旦服務運行並處理請求很不錯(即使每個查詢結果都是唯一的,因此沒有被緩存),在追蹤WCF查詢響應時間時,我對MySQL的性能沒有任何問題,經常打。

但巨大的問題,我一直沒能破解是才獲得到數據庫的調用後連接到MySQL的開放時間長度已經進行了約3或4分鐘。如果幾分鐘內沒有進行數據庫調用,則需要8或9秒或更長時間才能再次打開連接。我包裝了實際的「conn.open();」跟蹤調用前後的跟蹤語句,這是我在幾分鐘不活動後一次又一次地看到的行爲。順便說一下,我也嘗試過(並且仍在使用)「使用」連接處理風格,以確保MySQL連接器管理連接池。

如: 使用(VAR康恩=新的MySqlConnection(Properties.Settings.Default.someConnectionString)){...語句...}

我覺得我已經就這一個死衚衕,因此任何建議將不勝感激。

+0

我使用Enterprise Library Community來管理MySQL Connector /。我獲得了快速的時間 –

+0

嗨Alberto,我已經運行了一些更多的測試,並且只有當應用程序在Azure上運行並連接到MySQL(也可以在虛擬機或遠程服務器上的Azure上)時纔會出現緩慢。在Azure上連接到SQL Server速度很快。在我去檢查企業庫之前檢查一下,你是否在Azure上運行?看來Azure或MySQL連接器正在刪除連接池。 – AnthonyC

回答

2

我可以解釋你的問題「在沒有對數據庫調用3到4分鐘後連接到MySQL Open所需的時間長度,如果幾分鐘內沒有數據庫調用,需要8或9秒或更多才能再次打開連接。「爲什麼會發生:

Windows Azure網站使用熱(活動)和冷(非活動)網站的概念,其中如果網站沒有活動連接,則網站變冷狀態意味着主機IIS進程退出。當與該網站建立新的連接時,需要幾秒鐘才能完成網站的準備工作。雖然您有MySQL後端與此網站相關聯,但由於IIS主機進程需要一段時間才能開始,因此需要更長的時間才能獲得請求的服務。這是活動後幾分鐘響應時間較長的原因。

您可以看到在Windows Azure上熱(有源)和冷更多詳細資料(無效)網站下面的介紹: http://video.ch9.ms/teched/2012/na/AZR305.pptx

由於這個時候,我不知道,不知道你怎麼能保持即使轉移到共享網站或者根本不可能,網站仍然很熱。我可以建議您將問題寫入Windows Azure WebSites Forum,並且來自該團隊的人員將爲您提供適當的答案。

+0

感謝AvkashChauhan確認我不會發瘋! :) 我也發佈了這個問題在他們的虛擬機爲Azure論壇。我是一個SQL Server的男孩,並且只與MySQL一起工作以與客戶網站兼容。我希望現在能夠讓我們切換到SQL Server。 – AnthonyC

+0

@AnthonyC你能找到這個解決方案,我面臨一個非常類似的問題http://stackoverflow.com/questions/24706027/mysql-data-mysqlclient-mysqlconnection-open-taking-a-long-time – PUG