Mysql DNS反向解析導致連線逾時過程分析(skip-name-resolve)

來源:互聯網
上載者:User

MySQL資料庫收到一個網路連接後,首先拿到對方的IP地址,然後對這個IP地址進行反向DNS解析從而得到這個IP地址對應的主機名稱。用主機名稱在許可權系統裡面進行許可權判斷。反向DNS解析是耗費時間的,有可能讓使用者感覺起來很慢。甚至有的時候,反向解析出來的主機名稱並沒有指向這個IP地址,這時候就無法串連成功了。

可以在設定檔裡面禁止MySQL進行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:

skip-name-resolve (windows與linux下一樣的)

裝置在串連mysql時候,等待伺服器的banner資訊需要4s左右,影響了Mysql服務的連線速度。
通過如下方式進行驗證:

1、Telnet連接埠驗證

通過裝置和虛擬機器(Linux系統)分別Telnet Mysql服務的連接埠,會出現一下現象:

裝置(UAG/SCANNER): telnet後,等待Mysql的伺服器端回應大概需要等10s左右。

[DPtech-Developer-Shell]telnet 10.101.0.206 3308
Trying 10.101.0.206...
Connected to 10.101.0.206.
Escape character is '^]'.
E
5.0.67-community-nt-log?Hc95
虛擬機器(Ubuntu):telnet後,立即得到了Mysql伺服器的返回

[root]~# telnet 10.101.0.206 3308
Trying 10.101.0.206...
Connected to 10.101.0.206.
Escape character is '^]'.
E
5.0.67-community-nt-log?D%(;1$]+,¢!Zdh`'?G)6r]YConnection closed by foreign host. //這裡耗時很短

2、通過程式進行驗證

具體原始碼見附件:驗證程式原始碼
原始碼基本上是設定了Recv逾時後,建立socket串連之後接受資料,收到後計時並輸出。

在裝置上和虛擬機器中的結果分別如下:
裝置:

[DPtech-Developer-Shell]/tcpclient_mips 10.101.0.1 3306
花費時間:19553
Recved 68 bytes
@
5.5.2-m2-community%uD3q`n)

虛擬機器:

[root]tcp_demo# ./tcpclient 10.101.0.1 3306
花費時間:10525
Recved 68 bytes
@
5.5.2-m2-communitd~k~Y";B

可以發現,裝置上大約比Linux伺服器多耗時9s,其中10秒鐘可能是recv本身逾時的時間。

3、通過不同作業系統進行Telnet驗證

通過Windows系統和Linux虛擬機器、裝置,分別通過Telnet進行串連嘗試,通過抓包分析得知,只有裝置的耗時比較長,其他的耗時都比較短。
抓包時發現裝置中的socket建立之後,MYSQL伺服器需要發送很多次的NBNS報文後,才會傳輸banner資訊,而Linux虛擬機器和Windows系統的主機在這個過程中都沒有出現這個問題。
尋找了一些資料,關於MYSQL NBNS報文的問題:

Mysql論壇的提問:

http://forums.mysql.com/read.php?11,250982,250982#msg-250982

該問題的回覆
http://forums.mysql.com/read.php?11,250982,254683#msg-254683

從回覆中來看,貌似是某些版本的問題,臨時的解決方案是對Mysql伺服器進行配置,不啟用Named Pipes,即 具名管道 功能即可解決這個問題。

後經尋找相關資料得知,遠端連線逾時可能由於Mysql預設開啟了DNS反向解析的緣故,每次串連時伺服器都嘗試解析串連用戶端的主機名稱,導致時間比較長。

解決方案是在伺服器端的my.ini檔案中,[mysqld]這個節下配置一個skip-name-resolve以關閉Mysql預設開啟的DNS反向解析就可以了。

再次通過裝置和虛擬機器或者Windows系統進行Telnet,可以發現連線逾時的現象明顯不存在了。

另外通過自己寫的C代碼進行串連的時候也存在同樣的問題,修改skip-name-resolve以後,實際上就可以發現該問題已經不存在了:

裝置:

[DPtech-Developer-Shell]/tcpclient_mips 10.101.0.1 3306
花費時間:10520
Recved 68 bytes
@
5.5.2-m2-community

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.