精华内容
下载资源
问答
  • Mysql DNS反向解析导致连接超时

    千次阅读 2014-01-03 17:28:19
    MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很...
    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论坛的提问:



    该问题的答复 


    从答复中来看,貌似是某些版本的问题,临时的解决方案是对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[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时候发现速度也比较慢,消耗的时间基本上和设备中相当,可能是由于虚拟机和宿主主机之前不需要进行反向域名解析,或者说是应为系统本身就知道虚拟机IP地址(NAT模式)对应的主机名,所以不需要进行DNS反向解析,导致在虚拟机中出现了特殊情况。
    最后得出结论,可能这个问题实际上和设备或者虚拟机,Linux系统、Windows系统没有多大关系,主要由于服务器的反向DNS解析导致该问题。无法从客户端途径去解决,也就是说我们设备无法处理这种情形。

    出现这个原因其实是mysql本身存在的一个问题,即反向解析问题。不管你是使用域名还是IP连接数据库,mysqld都会做一个反向解析的过程,即从IP->dns的反查,反查的过程是很慢的而且是受ISP控制,所以一旦有大量的反查要求而又无法及时响应就会出现前面所说的unauthenticated user,而且mysql会出现停顿状态。
    在做这个设置的之前一定要检查系统,将所有连接改写为IP连接,因为一旦此设置生效,mysql是无法进行域名解析的,原有的域名连接将全部失效。

    展开全文
  • Mysql数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。 进行DNS解析为什么会出错? 因为当客户端发...

    最近在做项目中,发现使用Postman第一次访问刚刚启动的程序,需要1000ms,而之后的每次访问,随便一个接口,时间就是几时ms,这就很纳闷了,好奇的是为什么会这样呢?

    Mysql数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。

    进行DNS解析为什么会出错?
    因为当客户端发起超过百万的连接时,Mysql对于每个连接都会进行反DNS解析得到主机名这样,反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。
    可以在配置文件里面禁止Mysql进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:注意别加错了

    skip-name-resolve (windows与linux下一样的)
    只不过linux是my.cnf文件,windows是my.ini文件
    

    当我把上面的语句加入到MySQL的时候,重新启动程序,再次访问,时间就是几时ms。很明显验证了这个问题,简单粗暴的分析方法。【my.ini配置文件找不到,那就是被隐藏了,我的是在c盘的ProgramData文件中,该文件被隐藏了。。】

    展开全文
  • MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很...
  • Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve) 作者: 字体:[增加 减小] 类型:转载   从其它地方连接MySQL数据库的时候,有时候很慢。慢的原因有可能是MySQL进行反向DNS解析造成的,这里简单介绍...

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

    作者: 字体:[增加 减小] 类型:转载
     
    从其它地方连接MySQL数据库的时候,有时候很慢。慢的原因有可能是MySQL进行反向DNS解析造成的,这里简单介绍下原理,需要的朋友可以参考下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[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时候发现速度也比较慢,消耗的时间基本上和设备中相当,可能是由于虚拟机和宿主主机之前不需要进行反向域名解析,或者说是应为系统本身就知道虚拟机IP地址(NAT模式)对应的主机名,所以不需要进行DNS反向解析,导致在虚拟机中出现了特殊情况。
    最后得出结论,可能这个问题实际上和设备或者虚拟机,Linux系统、Windows系统没有多大关系,主要由于服务器的反向DNS解析导致该问题。无法从客户端途径去解决,也就是说我们设备无法处理这种情形。

    展开全文
  • 解决QQ连接超时问题

    2021-05-17 18:11:27
    解决QQ连接超时问题 QQ设置中更换代理,无效 连接手机热点,无效 在cmd中输入命令 netsh winsock reset(回车)//ipconfig/flushdns(回车) (为了刷新dns解析缓存)
    1. QQ设置中更换代理,无效

    2. 连接手机热点,无效

    3. 在cmd中输入命令 netsh winsock reset(回车)//ipconfig/flushdns(回车)       (为了刷新dns解析缓存),重启,无效

    4. 卸载重装,安装在D盘。成功解决。

     

    展开全文
  • github.com 连接超时1.参考一1.1参考一方式如下:2.参考二2.1参考二方式如下:3.参考三(方式跟参考一一样,但解决了我的问题)3.1修改host文件:3.2刷新DNS3.3测试github3.4访问github页面成功3.4IDEA连接github成功 ...
  • 解决Kubernetes Pod DNS超时问题

    千次阅读 2019-04-30 16:59:21
    最近刚给公司测试环境上了K8s,大部分容器采用得是以alpine为基础的镜像,基础服务如MySQL、Redis等以域名的方式连接,但是出现一个很奇怪的现象,部分Pod内应用报DNS超时,大概报错日志是这样的(JAVA):io.netty....
  • Error response from daemon: Get ...dns指定使用阿里的8.8.8.8 vim /etc/resolv.conf 将dns修改为8.8.8.8 才可以。 # .
  • git克隆出现连接超时如何解决

    千次阅读 2020-07-08 10:55:35
    1、当我们用git去克隆一个项目时,发现总是连接超时报错,克隆不了,如何排查? 2、重点:解决方法 (1)打开cmd窗口,输入ping github.com,看是否能ping通,如何是请求超时,则应该是本地DNS无法解析导致的 (2...
  • GitHub.com连接超时问题 怀疑连接不到github.com,在cmd窗口中,尝试ping一下github.com。 确实ping不通。 因此怀疑是:本地DNS无法解析导致的。 解决方法: 打开C:\Windows\System32\drivers\etc\hosts 在文件末尾...
  • App Store 下载软件提示连接超时,无法购买时,打开 设置 -> 网络,选中WiFi ,点击高级然后修改添加DNS,如下即可
  • 进入站长工具网站的域名解析网址:http://tool.chinaz.com/dns/ ,在A类型的查询中输入github.com 选择对应的IP地址 修改hosts文件 sudo vim /etc/hosts 在末尾追加如下内容IP地址+域名 保存退出,即可登录网页 ...
  • 1,修改DNS为 主要DNS:8.8.8.8 (最好客户端也修改,解决DNS劫持,谷歌大法好) 备用DNS:8.8.4.4 2,修改cluster.ini master_port = 10100 (估计是默认的10888端口被占用,无法连接的主要原因应该是这个)
  • 由于github过一个月就会连接超时,网上查找教程有很麻烦,因此写个blog记录下 网上很多解决方法,大多都是直接修改host文件值,而且网址直接copy。但大多映射的网址都ping不通,即本地dns解析错误。 判断 先ping其他...
  • 但前端我用Androidstudio连真机测试的话 就点登录会显示网络连接超时 用虚拟机登录的话也是这样 有这个提示: CANNOT TRANSLATE guest DNS ip 主要还是想在自己这边运行起来 别人在这块的host改成10.0.2.2...
  • 3、哪里超时了 4、哪里死循环了 一开始以为是偶然,结果短短一天内,有好几个用户反馈有这个问题,所以这绝对不是偶然,一定是有一个条件触发了这个bug。 由于我们自己调度了dns,所以一开始我们以为是httpdns的...
  • 直接ping github.com是能返回数据包的,怀疑是本地DNS无法解析导致的。 那么,我们可以上站长之家查看可用的响应IP。 然后我的是mac os系统,找到hosts文件,路径是/private/etc/hosts,在末尾添加上 然后就...
  • 在部署CAS单点登录到生产环境后,由于互联网网速问题影响,默认设置下偶尔会看到java.net.ConnectException: Connection timed out这样的连接超时异常信息,造成无法完成登录问题,我们可以通过增加超时时间来解决这...
  • 3、哪里超时了 4、哪里死循环了 一开始以为是偶然,结果短短一天内,有好几个用户反馈有这个问题,所以这绝对不是偶然,一定是有一个条件触发了这个bug。 由于我们自己调度了dns,所以一开始我们以为是httpdns的...
  • 测试了一下,直接在Vmware的VM里面可以ping...后面发现是本地的网络设置里面的vmware的NAT的网卡设置了手工填写地址和DNS。 修改为自动获取。问题解决。 转载于:https://www.cnblogs.com/comexchan/p/5815402.html...
  • ssh登录服务器时总是要停顿等待一下才能连接上,这是因为OpenSSH服务器有一个DNS查找选项UseDNS默认是打开的。  UseDNS选项打开状态下,当客户端试图登录OpenSSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR...
  • 源Web服务器脱机,或与我们不正确的DNS设置为它的IP地址设置(即离我们的要求是送错了地方)。 还有我们和原始Web服务器之间的网络路由问题。 起源服务器保持连接禁用。 在所有这些情况下,这是...
  • 远程连接mysql超时的解决办法PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或...
  • nginx mesos-dns 结合时 location ~ .* { pro xy_pass http://www.example.com/; proxy_set_header X-Real-IP $remote_addr; } 之前www.example.com是解析到IP为A的,由于后端服务器IP变更为B,并且域名解析也...
  • 首先记录下结果,都是寻找DNS的锅。 测试代码: public void testFlow(){ EventLoopGroup group = new NioEventLoopGroup(); // try { Bootstrap bootstrap = new Bootstrap() .group(group) ...
  • 用Windows 7而且又偶尔会关心一下日志的TX可能会发现在网络情况不好的情况下经常可以发现类似下图的系统日志提示“在没有配置的 DNS 服务器响应之后,名称域名的名称解析超时”的记录,同时你的网络连接会中断或受限...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 377
精华内容 150
关键字:

dns连接超时