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

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

时间:2019-01-19 11:28作者:网友投稿

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解析导致该问题。无法从客户端途径去解决,也就是说我们设备无法处理这种情形。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[机器人-3]:开源MIT Min cheetah机械狗设计(三):嵌入式硬件设计

目录 概述: 1、硬件组成 2、通信速率 3、通信协议 4、mbedOS 概述: 以1条腿进行设计,其它腿也一样: 腿部硬件组成 1、硬件组成 1)UP board计算机板卡(Linux OS): 腿部控制器…

AlphaGo Zero的伟大与局限——ResNet作者、旷视研究院院长孙剑深度评述

来源:Megvii旷视科技 概要:2017年10月19日,Deepmind 团队发布强化版的 AlphaGo Zero,该版本的 AlphaGo 实现了在 AI 发展中非常有意义的一步——“无师自通”,这也让去年败在未升级版本 AlphaGo Master 下的中国棋手柯…

mysql 窗口函数最新一条_MySQL 8.0 窗口函数(window functions)

窗口函数(window functions)是数据库的标准功能之一,主流的数据库比如Oracle,PostgreSQL都支持窗口函数功能,MySQL 直到 8.0 版本才开始支持窗口函数。窗口函数,简单来说就是对于一个查询SQL,将其结果集按指定的规则进…

《人类简史》作者:应对 AI 革命,要打造新的经济、社会和教育体系

来源:36氪 概要:正在进行的人工智能革命将改变几乎所有的工作,给社会和经济的发展带来机遇和挑战。一些人认为,人工智能将把人类赶出就业市场,创造一个新的“无用的阶层”;另一些人则认为,自动化…

php mysql 胚子_php mysql数据库连接浅识

1、连接数据库连接函数:a、mysql_connect() :函数打开非持久的 MySQL 连接b、mysql_pconnect() :函数打开持久的MySQL 连接mysql_connect()格式:mysql_connect(server,user,pwd,newlink,clientflag)注:脚本一结束&…

全球厂商已向自动驾驶投入800亿美元 依然群龙无首 | 厚势

来源: 腾讯科技 概要:近日发表的一份权威研究报告指出,全球厂商已经在自动驾驶领域投资 800 亿美元,但是迄今为止,仍然没有一家明显处于领先优势的厂商。 自动驾驶和电动车成为当下科技行业两大热点之一,几…

promise的状态值_什么是Promise,Promise的三种状态

什么是Promise对象:Js中进行异步编程的新的解决方案,用于表示一个异步操作的最终完成 (或失败), 及其结果值.。语法上:promise是一个构造函数简单来说,promise对象用来封装一个异步操作并可以获取其结果语法:new Promi…

埃森哲报告:2017年数字化浪潮下的医疗行业五大趋势

来源:AI掘金志 概要:日前,埃森哲发布了《2017年数字化健康技术展望》报告,分析了数字化浪潮下的医疗护理行业的实际落地情况和发展前景,主要围绕着AI、生态系统建设、新型医疗人才挖掘、新的监督法规等五个方面进行解…

python修改xpath节点_Xpath python在特定文本后查找节点

这里是HTML代码:Specific text 1link1 inside specific text 1link2 inside specific text 1link3 inside specific text 1Specific text 2link1 inside specific text 2link2 inside specific text 2link3 inside specific text 2link4 inside specific text 2Spec…

人类如何从不同角度识别物体?你需要对「小样本学习」有所了解

来源:转载自公众号「雷克世界」微信号:ROBO_AI 编译:嗯~阿童木呀、多啦A亮 概要:在视觉层次结构的较低层次,不变性使你可以识别矩形或线条,即使它是倾斜、旋转或缩放的;而在更高的层次上&#x…

python链表和树实验报告_关于Python实现树结构和链表结构的一点想法

关于Python实现树结构和链表结构的一点想法Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树、图、链表等结构1. 树的Python实现python自然可以使用class来创建Node结点类和Trie类,然后通过left和right属性保存Node结点来实现树P…

摩尔定律已死?GPU会取代CPU的位置吗?

来源:全球人工智能 概要:CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。 京举办的NVIDIA GTC China会议中,无论是AI智能运算,还是服务器数据中心、智能城市&#xff…

mysql 终端模拟_mysql客户端模拟脏读、幻读和可重复读

如果操作一下时报出错误:在数据库中执行 SET GLOBAL BINLOG_FORMAT mixed;执行后可通过SELECT * FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME ‘BINLOG_FORMAT’ ;进行查看。通过客户端选择可用数据库:use db_test(模拟数据库)以下…

Nature Human Behavior:大脑对不公平的反应有助预测抑郁症

来源:生物帮、神经科技 概要:过去的研究已经表明,财富分配不均,即经济不平等,可能会促进抑郁症等精神疾病的增加。但是,这背后的机制却不为人知。 2017年10月2日,国际学术权威刊物自然出版集团旗…

mysql创建table w3c_MySQL ALTER命令

MySQL ALTER命令当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。开始本章教程前让我们先创建一张表,表名为:testalter_tbl。 roothost# mysql -u root -p password;Enter password:mysql> use W3CSCHOOL;Datab…

这几家公司有个梦想:开发AI操作系统,让外行也成为人工智能大师

来源:科技行者 概要:未来几年人工智能会如何发展?除了阿尔法狗令人叹为观止的表现,人工智能确实也正在改变整个行业。但有一点我们是需要注意的,有必要让AI从总体上变得更加易于使用。 严格的说,Scot Barto…

mysql耦合_内聚与耦合

简单理解一下内聚和耦合。什么是模块模块就是从逻辑上将系统分解为更细微的部分,分而治之。复杂问题因为复杂性的问题,比较难解决,但是可以将复杂问题拆解为若干简单问题,逐个击破地解决这些简单问题,最后实现解决复杂…

mysql3.51 密码修改_mysql修改密码

刚初始化的数据库要做的步骤1 为root设置了密码2 删除默认用户3 删除默认的test库修改密码的方法1为管理员设置密码(开始没密码)mysqladmin -uroot password 12qwaszx;2 修改密码方法一: mysqladmin管理工具 (推荐使用)mysqladmin -uroot -p12qwaszx password c110123;注意有空…

Google CEO Sundar Pichai :“谷歌最大的威胁就是自身的成功”

作者:Dude 概要:10月9日,低调的皮柴哥接受了英国卫报的访问,在访谈期间,他分享了谷歌在人工智能上发展,也表达了对谷歌近年来发展的隐忧。 10月9日,低调的皮柴哥接受了英国卫报的访问&#xff0…

python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...

我正在从here修改代码,我希望能够为某一天添加不同长度的轮班(例如,我希望星期五/第4天只有2个轮班)。我的代码总是以错误代码结尾。我相信这是由于我设定的一些限制的内部问题。在我在类似的程序上看到了一些关于StackOverflow的帖子,但是找…