MySql客戶端連線隨機逾時

MySql客戶端連線隨機逾時

我有 100 個 PC 用戶端透過 LAN 連接到 MySQL。

它們正在執行沒有特定週期的 INSERT 查詢。這不是設計上的限制,只是查詢執行取決於每個 PC 使用者的活動。

每個用戶端每次需要執行 INSERT 查詢時都會連接和斷開連接(連接 - 插入 - 斷開連接)。

幾個月來一切都工作正常,但幾天前客戶端開始連線失敗。

每天大約兩次,在 5-10 分鐘內,客戶端無法連線。他們收到超時錯誤。在此期間所有PC客戶端均無法連線。他們都無法連接。

失敗的時間是隨機的。有時發生在 09:00,有時發生在 13:00 等。我的意思是,一天中的某個時刻似乎並不重要。

查看伺服器端,我在 mysql 日誌中沒有看到任何錯誤,沒有服務崩潰,沒有伺服器重新啟動。我只啟用了錯誤日誌(沒有查詢日誌,沒有慢查詢日誌)。

然後我正在尋找網路問題,但是從PC到伺服器、從伺服器到PC的tracerts是正確的。

我在伺服器上進行了網路捕獲(使用wireshark),看看是否可以找到那裡的錯誤。

在錯誤期間(這 5-10 分鐘),我看到來自 PC 用戶端的連線停留在「問候語」訊息中。客戶端 PC 不發送「登入」請求作為回應。

答案1

深入研究網路痕跡,我發現了一些名稱解析問題。

我正在運行 5.1.41 版本的 MySQL Community Edition。我不知道對於更實際的版本是否如此,但在此版本中,預設會啟用“名稱解析”功能。

啟用名稱解析後,每次網路連線啟動時,MySQL 都會嘗試從 IP 解析客戶端的 PC 名稱。

如果此名稱解析失敗或延遲,則可能會導致連線問題。

隨著名稱解析的降低,每次客戶端 PC 重試時,我們都會遇到更多失敗和延遲的連接,並且最終沒有網路連接成功。

解決方案是停用名稱解析。如果您為某些依賴用戶端主機名稱的 MySQL 使用者定義了權限,則此功能非常重要。但由於我們沒有任何基於客戶端主機名稱的權限(而是使用 IP 位址),我們可以安全地停用「名稱解析」功能。

這是解釋這一點的鏈接,並為我指明了正確的方向以及在網絡捕獲中搜索的內容:

https://bugs.mysql.com/bug.php?id=49877

相關內容