十三年专注于网站建设与互联网应用开发,低调、有情怀的网络应用服务商!
南昌百恒科技微信公众号 扫一扫关注
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒科技微信公众号

局域网内mysql连接慢的解决方法

百恒 2023-04-01 16:22:54 489
       在有些时候,我们通过内网连另外一台机器的mysql服务时, 会发现速度N慢! 等了大约几十秒才等到提示输入密码,  但是ping mysql所在服务器却很快,想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析,下面南昌APP开发公司百恒科技小编来跟大家聊一下局域网内mysql连接慢的解决方法。


局域网内mysql连接慢的解决方法


       小编在网上搜索了下解决办法, 发现有两种:

       1、两边机器配置的resolve.conf不一样, 把resolve.conf配置成速度比较快的DNS即可

       2、把mysql配置中的DNS反向解析关掉, 也可以

       我用的是第1种办法, 修改resolve.conf配置后, 速度很快上来了! 
    
       方法1、: 摘自http://gcoder.blogbus.com/logs/31907502.html

       两台在同一网段的机器, 连接同一个数据库服务器, 一台的速度是另一台的100倍, 数据库主机是域名表示的. 怎么都想不明白?
       后来查看两台机器的 /etc/resolv.conf, 发现配置不一样, 改成速度快的那台机器的配置, 速度一下上来了.
       域名解析也可以导致网络程序慢, 又一收获. 另外, mysql还有DNS反向解析的问题, 也可能导致速度慢, 可以在mysql的配置文件中, 把DNS反向解析关掉. 
    
       方法2、: 摘自
       当远程访问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配置起来不象以前的那个傻瓜化了,这个问题折腾了我一上午的时间,晚上回来总算是解决了,嘿嘿,又学到一些东西。
       Windows 2003下的MySQL 5服务器,本机连接到MySQL服务非常快,局域网内有两台Linux机器,有一台连接很快,另外一台输入密码后要等好几秒钟才能连上。

       解决办法:
       在MySQL服务器的配置中增加一个如下配置后速度飞快。
       [mysqld]
       skip-name-resolve

       附录:( How MySQL uses DNS )
       When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.
       If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.
      You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.
      If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with --skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.
      You can disable the hostname cache with --skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.
      If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with --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系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,
      如果mysql服务器没有开远程帐户,那么可以在my.ini里面加上skip-grant-tables

       以上是南昌APP开发公司百恒科技小编要跟大家聊到的关于局域网内mysql连接慢的解决方法,希望能够对大家有所帮助,想要了解更多关于这方面的内容,欢迎留言咨询百恒科技,百恒科技专注于南昌APP开发南昌网站建设开发16年!


相关文章推荐   :    Cookie的Secure属性和HttpOnly属性       

                             Windows设置程序自动开机启动的方法      
400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
备案专线 备案专线
 
售后服务 售后服务
 
×