內網其他服務器節點連接Mysql數據庫很慢的解決方案


一、概述

  使用jdbc方式對數據進行同步時,由於設置了數據庫登錄超時時間是10s,結果發現有的服務器節點可以連接,有的服務器節點不能連接Mysql數據庫。排查了好長原因,最后,自己寫了一個jdbc的測試程序,發現正常節點連接只需要200ms左右,而其他節點卻需要10400ms,而我們由於設置的10s超時時間,因此排除了網路后,終於找到原因了。

二、原因和解決方案

1、連接Mysql數據庫很慢的原因

  MySQL數據庫對連接的客戶端進行DNS反向解析。所謂反向解析是這樣的:MySQL接受到連接請求后,獲取的是客戶端的ip,為了更好的匹配MySQL.user里的權限記錄(某些是用hostname定義的)。

 如果MySQL數據庫設置了DNS服務器,並且客戶端ip在DNS上並沒有相應的hostname,那么這個過程很慢,導致連接等待。添加skip-name-resolve以后就跳過這一個過程了。

2、解決方案

 a、可以通過修改MySQL的配置文件實現

   Linux下是my.cnf文件,windows下是my.ini文件,在配置文件[mysqld]下新增如下一行代碼:

    skip-name-resolve

   然后重啟MySQL服務,再次連接發現已是秒連了。這個方案的不足之處就是,以后在使用grant對用戶進行授權時只能使用IP格式,而不能使用主機名稱了

b、通過修改系統hosts文件也可以實現

 舉例來說,我想解決192.168.1.100遠程連接MySQL服務器緩慢的問題,只需要在MySQL庫所在服務器的hosts文件中新增一條記錄如下:

  192.168.86.100 test.com

 保存退出,再次遠程連接該MySQL庫,同樣很快。之所以說絕,是因為這樣設置,你添加記錄的192.168.86.100遠程連接速度變快了,其他主機連接速度跟之前一樣慢。該方法同樣可以解決ssh遠程連接某主機響應很慢的問題,原理一樣。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM