公司的乙個系統使用mysql資料庫,區域網內訪問時連線速度很慢,每次都要過十幾秒後才能連上,只要連線上了速度正常。在網上查了一下,發現了mysql有乙個「反向解析」的問題:安裝mysql後,預設 反向解析是開啟的。不管你是使用網域名稱還是
ip連線資料庫,mysqld都會做乙個反向解析的過程,即從 ip->dns的反查,反查的過程是很慢的而且是受isp控制,所以一
旦isp由於某些原因(這個也許有必要讓系統工程師查查)而無法響應就會出現 前面所說的unauthenticated user,而
且mysql會出現停頓狀態。解決的辦法就是在my.cnf裡面增加乙個設定禁止mysql做任何解析的動作。
–skip-name-resolve但是奇怪的是,為什麼征途伺服器上有這個問題,老征途也是外網為什麼沒有這個問題,如果真是dns解析問題的話應該大家都有才對...後來為了再此確實是dns反向解析造成慢的問題,在一次驗證中使用了telnet命令直接去連mysql埠,發現情況和後台連線一樣,telnet征途伺服器的mysql埠要等5秒才返回結果,其他的伺服器telnet出去馬上就返回了結果並且在這次驗證中發現了返回的mysql版本,於是我明白了這可能和版本有關。我們征途伺服器上mysql版本是5.1.67,s2和s3的內網伺服器和老征途伺服器上的mysql是5.5.23和5.5.29,所以應該是mysql後來的版本對這塊有處理所以5.5的版本上沒發現這個情況。在做這個設定的之前一定要檢查系統,將所有連線改寫為ip連線,因為一旦此設定生效,mysql是無法進行網域名稱解析的,原有的網域名稱連線將全部失效。
網上給出的解決方法有2種:
1.在my.cnf裡加上skip-name-resolve禁止dns反解析。當然會有點問題
2.在etc/hosts檔案裡直接把要連線的客戶端ip加到這裡來寫成主機這樣也可以不用進行dns反解析了。 考慮到方法1改動太大而且要重啟mysql,伺服器上沒辦法做到。所以我用了方法2測試了一下。發現速度確實上來了,於是我最終確定問題的原因就是這個。 目前就使用了方法2把發布網頁的ip位址加到征途伺服器上etc/hosts中去。
Mysql DNS反向解析導致連線超時
mysql資料庫收到乙個網路連線後,首先拿到對方的ip位址,然後對這個ip位址進行反向dns解析從而得到這個ip位址對應的主機名。用主機名在許可權系統裡面進行許可權判斷。反向dns解析是耗費時間的,有可能讓使用者感覺起來很慢。甚至有的時候,反向解析出來的主機名並沒有指向這個ip位址,這時候就無法連線...
反向解析引發的訪問慢問題的解決
ssh服務預設啟用了dns反向解析的功能,這種設定會導致我們在通過ssh訪問伺服器時,如果該伺服器的主機名在dns中無記錄的話,由於等待超時而出現響應極慢的情況。這時可對ssh伺服器 etc ssh sshd config新增如下設定 usedns no 重啟ssh服務,即可關閉反向解析,訪問速度頓...
網域名稱解析慢導致微信授權慢的問題
剛開始以為是網路慢問題,沒去注意。後面通過打上時間日誌觀察發現,慢的時候基本是在5秒。既然那麼有規律了,那肯定是有某個問題的。http請求的初始過程是什麼呢?dns解析。通過ping和wget命令,發現確實在網域名稱解析的那個過程很慢。所以,最終在host直接寫死網域名稱,解決了這個問題。為什麼是5...