2016-09-25 53 views
0

調用非常慢的mysql連接建立我目前正在嘗試做一些應該簡單直接的事情 - 連接到數據庫服務器,運行查詢,看看我是否收回任何東西,如果發送它回到用戶。這是我用做它的代碼:只有當從代碼

MySqlDataReader reader = MySqlHeaper.ExecuteReader(connectionString, $"SELECT * FROM table WHERE insertDateTime > '{DateTime.Now.AddSeconds(-1800).ToString("yyyy-MM-ddTHH:mm:ss")}'"; 

我也有MySqlCommandMySqlConnection對象對想這一點,並且無論哪種方式,結果都是一樣的 - 它需要大約7100ms,以連接到MySQL服務器。我知道這聽起來像是一個應該在ServerFault上的問題,但我的測試告訴我,否則。當我使用命令行MySql客戶端使用完全相同的憑據連接到我的數據庫服務器並運行完全相同的查詢時,我建立了連接,並且我的數據沒有任何變化。我不知道在這個階段,如果它是一個服務器設置或沒有,但這裏是我試過到目前爲止:

  • 重啓服務器
  • 重新啓動MySQL服務器
  • 的skip_name_resolve設置設置爲1,以便防止反向名稱查找上連接
  • 使用查詢服務器(MySQL命令行客戶機和MySQL工作臺)
  • 開放的RDS實例的所有AWS IAM權限的替代手段,以允許所有從服務器

似乎沒有什麼區別,所以我無法解釋這種可怕的表現。這也僅在我打開連接時發生。運行查詢,插入,你閃電般快。任何人可能提出的建議將是最有幫助的。

回答

0

我不希望IAM權限對性能有任何影響。我希望他們要麼成功,要麼不成功。

我會執行一些診斷協議來獲取更多信息。

1)嘗試後續查詢,看看它是否是堆棧被初始化的問題。後續查詢更快嗎? 2)嘗試一個只是一個身份查詢的查詢。一些不需要任何IO的東西。 3)嘗試從不同的平臺查詢(可能是像Ruby或PHP的腳本語言)

一旦你回答這些問題,它應該幫助你縮小範圍。

+0

在我們的測試中,我們確定它在驗證過程中發生。查看大多數慢連接時間的活動會話查詢,用戶是「未經驗證的用戶」,查詢是「連接」 – Adrian