最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年03月31日 13:37:39   作者:  
從其它地方連接MySQL數(shù)據(jù)庫的時(shí)候,有時(shí)候很慢。慢的原因有可能是MySQL進(jìn)行反向DNS解析造成的,這里簡(jiǎn)單介紹下原理,需要的朋友可以參考下
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論壇的提問:

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

該問題的答復(fù)
http://forums.mysql.com/read.php?11,250982,254683#msg-254683

從答復(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è)備無法處理這種情形。

相關(guān)文章

  • mysql日常鎖表之flush_tables詳解

    mysql日常鎖表之flush_tables詳解

    Flushtables和Flushtableswithreadlock是MySQL中的兩個(gè)命令,用于關(guān)閉表對(duì)象和清空查詢緩存,它們會(huì)等待所有正在運(yùn)行的SQL請(qǐng)求執(zhí)行結(jié)束,如果請(qǐng)求操作的表集合為{tables},則會(huì)阻塞其他會(huì)話對(duì){tables}表上的所有操作,包括查詢和寫操作
    2024-11-11
  • mysql 常用數(shù)據(jù)庫語句 小練習(xí)

    mysql 常用數(shù)據(jù)庫語句 小練習(xí)

    一個(gè)mysql小練習(xí) 建表 查詢 修改表 增加字段 刪除字段
    2009-07-07
  • explain命令為什么可能會(huì)修改MySQL數(shù)據(jù)

    explain命令為什么可能會(huì)修改MySQL數(shù)據(jù)

    這篇文章主要介紹了explain命令為什么可能會(huì)修改MySQL數(shù)據(jù),幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • mysql8.0.30用戶與權(quán)限管理的實(shí)踐

    mysql8.0.30用戶與權(quán)限管理的實(shí)踐

    MySQL8.0新加了很多功能,其中在用戶管理中增加了角色的管理,本文主要介紹了mysql8.0.30用戶與權(quán)限管理的實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 淺談MySQL之淺入深出頁原理

    淺談MySQL之淺入深出頁原理

    首先,我們需要知道,頁(Pages)是InnoDB中管理數(shù)據(jù)的最小單元。Buffer Pool中存的就是一頁一頁的數(shù)據(jù)。當(dāng)我們要查詢的數(shù)據(jù)不在Buffer Pool中時(shí),InnoDB會(huì)將記錄所在的頁整個(gè)加載到Buffer Pool中去;同樣,將Buffer Pool中的臟頁刷入磁盤時(shí),也是按照頁為單位刷入磁盤的
    2021-06-06
  • MySQL分組的時(shí)候遇到ONLY_FULL_GROUP_BY報(bào)錯(cuò)問題及解決方案

    MySQL分組的時(shí)候遇到ONLY_FULL_GROUP_BY報(bào)錯(cuò)問題及解決方案

    這篇文章主要介紹了MySQL分組的時(shí)候遇到ONLY_FULL_GROUP_BY報(bào)錯(cuò)問題及解決方案,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Mysql數(shù)據(jù)庫百萬級(jí)數(shù)據(jù)測(cè)試索引效果

    Mysql數(shù)據(jù)庫百萬級(jí)數(shù)據(jù)測(cè)試索引效果

    這篇文章主要為大家介紹了Mysql數(shù)據(jù)庫百萬數(shù)據(jù)測(cè)試索引效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 高效利用mysql索引指南

    高效利用mysql索引指南

    這篇文章主要介紹了高效利用mysql索引指南,你知道如何創(chuàng)建恰當(dāng)?shù)乃饕龁??在?shù)據(jù)量小的時(shí)候,不合適的索引對(duì)性能并不會(huì)有太大的影響,但是當(dāng)數(shù)據(jù)逐漸增大時(shí),性能便會(huì)急劇的下降。,需要的朋友可以參考下
    2019-06-06
  • show engine innodb status顯示信息不全如何解決

    show engine innodb status顯示信息不全如何解決

    執(zhí)行 show engine innodb status\G 時(shí),顯示的信息不全,DEADLOCK相關(guān)信息太多,后面的都沒了
    2012-11-11
  • mysql如何實(shí)現(xiàn)多行查詢結(jié)果合并成一行

    mysql如何實(shí)現(xiàn)多行查詢結(jié)果合并成一行

    利用函數(shù):group_concat(),實(shí)現(xiàn)一個(gè)ID對(duì)應(yīng)多個(gè)名稱時(shí),原本為多行數(shù)據(jù),把名稱合并成一行
    2013-12-12

最新評(píng)論

岳普湖县| 洛川县| 墨竹工卡县| 长岭县| 米脂县| 浪卡子县| 襄城县| 大城县| 抚宁县| 壤塘县| 铁岭市| 锡林郭勒盟| 庆云县| 怀集县| 洛宁县| 临湘市| 涡阳县| 泰顺县| 洮南市| 江北区| 梧州市| 大悟县| 南汇区| 柞水县| 海安县| 元氏县| 拉萨市| 台前县| 梨树县| 宜兰县| 青神县| 寿宁县| 鲁甸县| 吉安县| 响水县| 泸溪县| 长泰县| 丹巴县| 乡城县| 怀来县| 德安县|