如何解决局域网内mysql数据库连接慢
通过内网连另外一台机器的mysql服务,确发现速度N慢!等了大约几十秒才等到提示输入密码。 但是pingmysql所在服务器却很快! 想到很久之前有过类似的经验,telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果反向解析不顺畅,估计就会延迟很多, 给人的感觉是连接速度N慢!)
在网上搜索了下解决办法,发现有两种:
一.两边机器配置的resolve.conf不一样,把resolve.conf配置成速度比较快的DNS就OK
二.把mysql配置中的DNS反向解析关掉,也OK
我用的是第一种办法,修改resolve.conf配置后,速度就上来了!
附一:摘自http://gcoder.blogbus.com/logs/31907502.html
两台在同一网段的机器,连接同一个数据库服务器,一台的速度是另一台的100倍,数据库主机是域名表示的.怎么都想不明白?
后来查看两台机器的/etc/resolv.conf,发现配置不一样,改成速度快的那台机器的配置,速度那上就上来了.
域名解析也可以导致网络程序慢,又一收获.另外,mysql还有DNS反向解析的问题,也可能导致速度慢,可以在mysql的配置文件中,把DNS反向解析关掉.
附二:摘自
当远程访问mysql时,mysql会解析域名,会导致访问速度很慢,加上下面这个配置可解决此问题
#禁止mysql做域名解析 [mysqld] skip-name-resolve
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。
但是,这样会引起一个问题:连接mysql时,不能使用localhost连接了,而是要使用IP地址的;如果是按localhost对用户赋权限的话,用户登录权限也要修改一下的。
连接mysql速度慢的解决方法.
2台服务器,一台跑iis+php,一台跑mysql,和以往一样配置好环境,测试页面一切OK
跑应用的时候发现php访问mysql速度很慢,这种情况在以前从未发现过,虽然2台服务器并非在同一网段中,但是ping数值基本上都在1,2ms之间,tcp连接应该不是问题关健,google以后找到答案,在my.ini文件的[mysqld]部分加入:skip-name-resolve,保存文件,重启mysql,一切OK啦,速度象飞一样了
新版本的mysql配置起来不象以前的那个傻瓜化了,这个问题折腾了我一上午的时间,晚上回来总算是解决了,嘿嘿,又学到一些东西。
Windows2003下的MySQL5服务器,本机连接到MySQL服务非常快,局域网内有两台Linux机器,有一台连接很快,另外一台输入密码后要等好几秒钟才能连上。
解决办法:
在MySQL服务器的配置中增加一个如下配置后速度飞快。
[mysqld] skip-name-resolve
附录:(HowMySQLusesDNS)
Whenanewthreadconnectstomysqld,mysqldwillspawnanewthreadtohandletherequest.Thisthreadwillfirstcheckifthehostnameisinthehostnamecache.Ifnotthethreadwillcallgethostbyaddr_r()andgethostbyname_r()toresolvethehostname.
Iftheoperatingsystemdoesn'tsupporttheabovethread-safecalls,thethreadwilllockamutexandcallgethostbyaddr()andgethostbyname()instead.Notethatinthiscasenootherthreadcanresolveotherhostnamesthatisnotinthehostnamecacheuntilthefirstthreadisready.
YoucandisableDNShostlookupbystartingmysqldwith--skip-name-resolve.InthiscaseyoucanhoweveronlyuseIPnamesintheMySQLprivilegetables.
IfyouhaveaveryslowDNSandmanyhosts,youcangetmoreperformancebyeitherdisablingDNSlookopwith--skip-name-resolveorbyincreasingtheHOST_CACHE_SIZEdefine(default:128)andrecompilemysqld.
Youcandisablethehostnamecachewith--skip-host-cache.YoucanclearthehostnamecachewithFLUSHHOSTSormysqladminflush-hosts.
Ifyoudon'twanttoallowconnectionsoverTCP/IP,youcandothisbystartingmysqldwith--skip-networking.
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。
MYSQL远程连接速度慢的解决方法
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.
后来在网上发现解决方法,my.ini里面添加
[mysqld] skip-name-resolve skip-grant-tables
这样速度就快了!
skip-name-resolve
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用mysqladminflush-privileges或mysqladminreload来开启访问控制;默认情况是showdatabases语句对所有用户开放,如果mysql服务器没有开远程帐户,就在my.ini里面加上skip-grant-tables
通过以上方法成功解决局域网内mysql数据库连接慢,有需要的朋友可以参考下本篇文章。