内网连接mysql慢解决办法

做了个小项目,tp6+redis+mysql,前台端分离,mysql 数据库与php项目部署不在同一个机子上

CentOS+MySQL和CentOS+php两台机子 

访问非常慢,不但SSH慢,MySQL连接也慢。内网连接不应该这么慢才对

故障描述:

    我参与项目做完后测试反映,测试环境下访问 http://192.168.88.192 很慢。我测试了一下,确实很慢。

    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。

  1. #GSSAPIAuthentication yes

  2. GSSAPIAuthentication no

  3. #UseDNS yes

  4. UseDNS no


然后,重启SSH服务。

 /etc/init.d/sshd restart

2:MySQL慢的处理

在mysqld节增加一句话,不使用DNS即可。

  1. [mysqld]

  2. skip-name-resolve

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值