国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

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

2024-07-24 12:40:54
字體:
供稿:網(wǎng)友
MySQL數(shù)據(jù)庫收到一個(gè)網(wǎng)絡(luò)連接后,首先拿到對(duì)方的IP地址,然后對(duì)這個(gè)IP地址進(jìn)行反向DNS解析從而得到這個(gè)IP地址對(duì)應(yīng)的主機(jī)名。用主機(jī)名在權(quán)限系統(tǒng)里面進(jìn)行權(quán)限判斷。反向DNS解析是耗費(fèi)時(shí)間的,有可能讓用戶感覺起來很慢。甚至有的時(shí)候,反向解析出來的主機(jī)名并沒有指向這個(gè)IP地址,這時(shí)候就無法連接成功了。    可以在配置文件里面禁止MySQL進(jìn)行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:    skip-name-resolve (windows與linux下一樣的)   設(shè)備在連接mysql時(shí)候,等待服務(wù)器的banner信息需要4s左右,影響了Mysql服務(wù)的連接速度。 通過如下方式進(jìn)行驗(yàn)證:   1、Telnet端口驗(yàn)證   通過設(shè)備和虛擬機(jī)(Linux系統(tǒng))分別Telnet Mysql服務(wù)的端口,會(huì)出現(xiàn)一下現(xiàn)象:   設(shè)備(UAG/SCANNER): telnet后,等待Mysql的服務(wù)器端回應(yīng)大概需要等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 虛擬機(jī)(Ubuntu):telnet后,立即得到了Mysql服務(wù)器的返回   [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. //這里耗時(shí)很短   2、通過程序進(jìn)行驗(yàn)證   具體源代碼見附件:驗(yàn)證程序源代碼 源代碼基本上是設(shè)置了Recv超時(shí)后,建立socket連接之后接受數(shù)據(jù),收到后計(jì)時(shí)并輸出。   在設(shè)備上和虛擬機(jī)中的結(jié)果分別如下: 設(shè)備:   [DPtech-Developer-Shell]/tcpclient_mips 10.101.0.1 3306 花費(fèi)時(shí)間:19553 Recved 68 bytes @ 5.5.2-m2-community%uD3q`n)   虛擬機(jī):   [root]tcp_demo# ./tcpclient 10.101.0.1 3306 花費(fèi)時(shí)間:10525 Recved 68 bytes @ 5.5.2-m2-communitd~k~Y";B   可以發(fā)現(xiàn),設(shè)備上大約比Linux服務(wù)器多耗時(shí)9s,其中10秒鐘可能是recv本身超時(shí)的時(shí)間。   3、通過不同操作系統(tǒng)進(jìn)行Telnet驗(yàn)證   通過Windows系統(tǒng)和Linux虛擬機(jī)、設(shè)備,分別通過Telnet進(jìn)行連接嘗試,通過抓包分析得知,只有設(shè)備的耗時(shí)比較長(zhǎng),其他的耗時(shí)都比較短。 抓包時(shí)發(fā)現(xiàn)設(shè)備中的socket建立之后,MYSQL服務(wù)器需要發(fā)送很多次的NBNS報(bào)文后,才會(huì)傳輸banner信息,而Linux虛擬機(jī)和Windows系統(tǒng)的主機(jī)在這個(gè)過程中都沒有出現(xiàn)這個(gè)問題。 查找了一些資料,關(guān)于MYSQL NBNS報(bào)文的問題:   Mysql論壇的提問:       該問題的答復(fù)      從答復(fù)中來看,貌似是某些版本的問題,臨時(shí)的解決方案是對(duì)Mysql服務(wù)器進(jìn)行配置,不啟用Named Pipes,即 命名管道 功能即可解決這個(gè)問題。   后經(jīng)查找相關(guān)資料得知,遠(yuǎn)程連接超時(shí)可能由于Mysql默認(rèn)開啟了DNS反向解析的緣故,每次連接時(shí)服務(wù)器都嘗試解析連接客戶端的主機(jī)名,導(dǎo)致時(shí)間比較長(zhǎng)。   解決方法是在服務(wù)器端的my.ini文件中,[mysqld]這個(gè)節(jié)下配置一個(gè)skip-name-resolve以關(guān)閉Mysql默認(rèn)開啟的DNS反向解析就可以了。   再次通過設(shè)備和虛擬機(jī)或者Windows系統(tǒng)進(jìn)行Telnet,可以發(fā)現(xiàn)連接超時(shí)的現(xiàn)象明顯不存在了。   另外通過自己寫的C代碼進(jìn)行連接的時(shí)候也存在同樣的問題,修改skip-name-resolve以后,實(shí)際上就可以發(fā)現(xiàn)該問題已經(jīng)不存在了:   設(shè)備:   [DPtech-Developer-Shell]/tcpclient_mips 10.101.0.1 3306  花費(fèi)時(shí)間:10520 Recved 68 bytes @ 5.5.2-m2-community[Z44E>G) 虛擬機(jī): [root]tcp_demo# ./tcpclient 10.101.0.1 3306 花費(fèi)時(shí)間:10521 Recved 68 bytes @ 5.5.2-m2-community7evE5wyx   通過虛擬機(jī)Telnet連接另外一個(gè)ip 10.101.0.206時(shí)候發(fā)現(xiàn)速度也比較慢,消耗的時(shí)間基本上和設(shè)備中相當(dāng),可能是由于虛擬機(jī)和宿主主機(jī)之前不需要進(jìn)行反向域名解析,或者說是應(yīng)為系統(tǒng)本身就知道虛擬機(jī)IP地址(NAT模式)對(duì)應(yīng)的主機(jī)名,所以不需要進(jìn)行DNS反向解析,導(dǎo)致在虛擬機(jī)中出現(xiàn)了特殊情況。 最后得出結(jié)論,可能這個(gè)問題實(shí)際上和設(shè)備或者虛擬機(jī),Linux系統(tǒng)、Windows系統(tǒng)沒有多大關(guān)系,主要由于服務(wù)器的反向DNS解析導(dǎo)致該問題。無法從客戶端途徑去解決,也就是說我們?cè)O(shè)備無法處理這種情形。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘谷县| 呼伦贝尔市| 临泽县| 类乌齐县| 辰溪县| 望江县| 邛崃市| 焉耆| 鄱阳县| 兴海县| 敖汉旗| 大城县| 丰宁| 巴林右旗| 西华县| 武川县| 兴义市| 珠海市| 隆尧县| 东源县| 连云港市| 台东县| 蒲江县| 达尔| 黄大仙区| 宁安市| 那坡县| 稻城县| 紫阳县| 聂荣县| 益阳市| 莒南县| 延庆县| 塔城市| 沅陵县| 墨玉县| 巴彦淖尔市| 周至县| 台东市| 元朗区| 永仁县|