日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql dns反向解析_Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)

發(fā)布時間:2024/7/23 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql dns反向解析_Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

時間:2019-01-19 11:28作者:網(wǎng)友投稿

MySQL數(shù)據(jù)庫收到一個網(wǎng)絡連接后,首先拿到對方的IP地址,然后對這個IP地址進行反向DNS解析從而得到這個IP地址對應的主機名。用主機名在權限系統(tǒng)里面進行權限判斷。反向DNS解析是耗費時間的,有可能讓用戶感覺起來很慢。甚至有的時候,反向解析出來的主機名并沒有指向這個IP地址,這時候就無法連接成功了。

可以在配置文件里面禁止MySQL進行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:

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

設備在連接mysql時候,等待服務器的banner信息需要4s左右,影響了Mysql服務的連接速度。

通過如下方式進行驗證:

1、Telnet端口驗證

通過設備和虛擬機(Linux系統(tǒng))分別Telnet Mysql服務的端口,會出現(xiàn)一下現(xiàn)象:

設備(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連接之后接受數(shù)據(jù),收到后計時并輸出。

在設備上和虛擬機中的結果分別如下:

設備:

[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

可以發(fā)現(xiàn),設備上大約比Linux服務器多耗時9s,其中10秒鐘可能是recv本身超時的時間。

3、通過不同操作系統(tǒng)進行Telnet驗證

通過Windows系統(tǒng)和Linux虛擬機、設備,分別通過Telnet進行連接嘗試,通過抓包分析得知,只有設備的耗時比較長,其他的耗時都比較短。

抓包時發(fā)現(xiàn)設備中的socket建立之后,MYSQL服務器需要發(fā)送很多次的NBNS報文后,才會傳輸banner信息,而Linux虛擬機和Windows系統(tǒng)的主機在這個過程中都沒有出現(xiàn)這個問題。

查找了一些資料,關于MYSQL NBNS報文的問題:

Mysql論壇的提問:

該問題的答復

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

后經(jīng)查找相關資料得知,遠程連接超時可能由于Mysql默認開啟了DNS反向解析的緣故,每次連接時服務器都嘗試解析連接客戶端的主機名,導致時間比較長。

解決方法是在服務器端的my.ini文件中,[mysqld]這個節(jié)下配置一個skip-name-resolve以關閉Mysql默認開啟的DNS反向解析就可以了。

再次通過設備和虛擬機或者Windows系統(tǒng)進行Telnet,可以發(fā)現(xiàn)連接超時的現(xiàn)象明顯不存在了。

另外通過自己寫的C代碼進行連接的時候也存在同樣的問題,修改skip-name-resolve以后,實際上就可以發(fā)現(xiàn)該問題已經(jīng)不存在了:

設備:

[DPtech-Developer-Shell]/tcpclient_mips 10.101.0.1 3306

花費時間:10520

Recved 68 bytes

@

5.5.2-m2-community[Z44E>G)

虛擬機:

[root]tcp_demo# ./tcpclient 10.101.0.1 3306

花費時間:10521

Recved 68 bytes

@

5.5.2-m2-community7evE5wyx

通過虛擬機Telnet連接另外一個ip 10.101.0.206時候發(fā)現(xiàn)速度也比較慢,消耗的時間基本上和設備中相當,可能是由于虛擬機和宿主主機之前不需要進行反向域名解析,或者說是應為系統(tǒng)本身就知道虛擬機IP地址(NAT模式)對應的主機名,所以不需要進行DNS反向解析,導致在虛擬機中出現(xiàn)了特殊情況。

最后得出結論,可能這個問題實際上和設備或者虛擬機,Linux系統(tǒng)、Windows系統(tǒng)沒有多大關系,主要由于服務器的反向DNS解析導致該問題。無法從客戶端途徑去解決,也就是說我們設備無法處理這種情形。

總結

以上是生活随笔為你收集整理的mysql dns反向解析_Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。