内网连接mysql慢解决办法

2024-07-01 17:10:34 1936

 

内网连接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查询超时,从而导致程序访问起来非常慢。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: