咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
内网连接mysql慢解决办法
负载均衡架构中网站访问非常慢,但网站部署在主站上不慢,排查是因为数据库连接速度慢。内网连接不应该这么慢才对
故障描述:
测试环境下访问 http://www.landui.com 很慢。我测试了一下,确实很慢。
192.168.88.192这台服务器上装有lnmp所以都是走本地的,而且是内网的测试服务器没有负载,所以应该不会出现慢的情况。
排查过程:
我使用这台服务器上的mysql客户端连入mysqld,使用命令查询数据很快。
查看了程序链接mysqld的配置,发现是用192.168.88.192这个ip,我就修改成了127.0.0.1 ,后来发现程序速度明显快了很多。
把程序中连接mysqld的配置修改为192.168.88.192,并在/etc/hosts 加入'192.168.88.192 localhost',修改后速度确实也是很快的。
主要是DNS的问题,因为是内网的服务器,无法访问DNS服务器。
解决办法:
1:SSH慢的处理
修改一下SSH的配置,关闭DNS,另外按网上的说法,连GSSAPI验证一并关掉。操作如下:
vi /etc/ssh/sshd_config
将UseDNS和GSSAPIAuthentication都设置为no。
#GSSAPIAuthentication yes
GSSAPIAuthentication no
#UseDNS yes
UseDNS no
然后,重启SSH服务。
/etc/init.d/sshd restart
2:MySQL慢的处理
在mysqld节增加一句话,不使用DNS即可。
[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.cnf里面加上skip-grant-tables
/etc/init.d/mysqld restart
3.遇到DNS解析导致慢解决思路
查看服务器的/etc/resolv.conf ,配置是192.168.88.192作为dns,可能是网络变更后dns是192.168.77.192。于是便修改了dns配置。
但是后来又发现网卡的掩码也不对,导致无法ping通192.168.88.192,于是便将网卡的配置重新修改了一下。
故障彻底恢复。
最后,通过抓包发现有很多反向解析的记录。
结论:
在程序运行的过程中,都会做DNS的反向解析。而在DNS有问题的情况下,会导致DNS查询超时,从而导致程序访问起来非常慢。