關於mysql的遠程連接速度慢得問題. (反向解析, skip-name-resolve)

這個問題困擾我好長時間.

今天才能解決.

現象 :

連接數據庫離奇的慢, 不過一旦連接之後, 操作數據庫是非常快的.

每次連接速度都不一樣, 時慢時快.


解決方法:

在mysql的配置文件my.ini文件  [mysqlld]加上skip-name-resolve.

或者給linux的hosts文件加上客戶端ip 域名信息, 域名信息隨便寫.也可以解決, 但這個不是最終解決方法, 一旦客戶端ip有變更,或者其他客戶端連接, 連接還是會很慢的.


這是因爲mysql的權限是用戶名@域名信息來管理導致的.

我的數據庫服務器和WAS服務器在同一個網段的其他服務器上.

每次連接數據庫的時候, MYSQL會根據請求的IP地址到hosts文件找該ip地址的域名信息.

然後再上DNS服務器反響解析該IP地址的域名信息.

再拿這個域名信息到權限表做判斷有沒有權限.

當從DNS服務器反響解析TimeOut之後(因爲局域網IP地址是在DNS上是找不到的... 所以是一直等待狀態, 最終timeout). 才被繼續往下執行.

所以導致連接慢, 但是一旦連接起來操作數據庫很快.


用skip-name-resole參數是取消反向解析的步驟.

這樣會導致權限管理這一塊不能用域名信息來管理了. 比如 [email protected]. 只能用ip來取代了.


以上只是個人的理解.......僅供參考吧!!

可能還有其他原因導致連接速度變慢..


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章