Posts Tagged by mysql 服务器

连接远程mysql数据库服务器慢的原因

新搭建的web server + db server 很不稳定, 访问特别慢, 而且经常连接不上。 查看运行结果, 每小时连接失败的次数有几十次,但其他参数均正常。配置怎么改都没有用, 后来发现phpmyadmin  process一栏里面把web server过来的连接认为是 unauthenticated user,  于是从这个点着手, 找到了原因。

解决方法:  把 web server 的 IP 放入db server 的 /etc/hosts 里面。

综合网上各类资料, yaozer 简单总结一下原因: MySQL 默认会进行DNS解析(写明了IP也还要去解析一下,为的是得到主机名,然后可以授权该主机名而不用写明IP), 而这个DNS解析需要调用系统函数,如果这些系统函数有问题, 连接就会受影响。 把 web server 的 IP 放入db server 的 /etc/hosts 里面, 采用本地DNS解析来解决这个问题, 是最上乘之选。使用skip-name-resolve的方式后,只能全部输IP访问了,会让 localhost 没法访问。

http://www.unixresources.net/linux/clf/db/archive/00/00/34/77/347701.html#article347701   里面讨论了类似的情况,复制部分:

  • 我的一台服务器RedHat7.3,上面跑了个Mysql服务。一直以来服务正常。可是昨天,我突然不能远程连接 我的数据库服务器(mysql)了。后来我把自己机器的ip加入/etc/hosts就可以,但是取消/etc/hosts IP这一行就不可以连接了,显示“lost connection to mysql server during query”
  • 算起来就是前几天更新了几个包而已,glibc等,应该跟mysql没关系的。你的临时解决方法我也试过了,可以暂时顶住。
  • 首先谢谢大家的关心,这个问题已经有很多人遇到,只是我们遇得比较早。总体上讲都是由于系统得某些升级造成的。我经过多方查证和收集资料,咨询。得到这个解决方案。不敢独享,还望各位给我指证,谢谢!解决方案:
    在Mysql服务启动脚本/etc/rc.d/init/mysqld 里面的start里面加入”–skip-name-resolve”参数,禁止反相IP解析。问题得到解决。
  • 接到redhat发布的errata通告了,原来是glibc库的问题。通告还专门指出了mysql会出错。

附: MYSQL远程连接速度慢的解决方法的相关资料

http://bbs.lihuasoft.net/thread-10904-1-1.html

http://tech.e800.com.cn/articles/2009/630/1246332746740_1.html

http://www.xishuiw.com/info/2009-3/2009-3-16-16759.htm

http://doc.linuxpk.com/66944.html

http://be-evil.org/post-40.html   该文提到了 Mysql DNS 的细节

分享家:Addthis中国