反向解析导致访问变慢的问题分析

发布时间:2020-10-01编辑:脚本学堂
本文介绍下,由于反向解析导致访问变慢的问题及解决方法,包括mysql反向解析与ssh反向解析。有需要的朋友参考下。

1,mysql反向解析

mysql数据库服务器放在内网,从公网访问时连接速度很慢,每次都要过12秒后才能连上,只要连接上了速度正常。

抓服务器上的数据包进行分析,连接mysql时,都会向DNS做反向地址查询,只有等超时失败后,mysql才会响应客户端,因而数据很慢。

将DNS禁止,从公网访问mysql连接很快。
此时可以考虑禁止mysql中反向地址查询

操作方法如下:
#vi /etc/my.cnf 配置你的my.cnf文件
[

复制代码 代码示例:
mysqld]
skip-name-resolve //消除MySQL进行DNS解析的时间

2,ssh反向解析导致linux SSH远程登录慢
一台中转机ssh登录服务器(Linux)时,很慢,大概要15秒左右,但是ping很快,而且登录后服务器的负载也很低。

这里分享下解决方法:
在目标服务器上有一个文件/etc/nsswitch.conf ,里面有如下一行
hosts: files dns
解释:对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns,进行域名解析,如果dns也无法访问,就会等待访问超时后返回,因此等待时间比较长。

屏蔽此行达到同样的效果,应该是可行的。
但如果本机要通过域名访问其它服务器,则肯定无法访问,因此这行应该需要保留。

dns如果不可用,会带来的一些副作用。

很多linux系统中屏蔽了telnet rlogin 或者 X-window,而把openssh作为自己默认的远程登录方式。
有一个问题就是:telnet到server速度很快,但是ssh连接时却很慢,大概要等半分钟甚至更久。
ping的速度也非常好,让人误以为是ssh连接不上。

此问题的原因在于:server的sshd会去DNS查找访问client IP的hostname,如果DNS不可用或者没有相关记录,就会耗费大量时间。

可以参考如下的方法解决:
1, 在server上/etc/hosts文件中把本机的ip和hostname加入
2, 在server上/etc/ssh/sshd_config文件中修改或加入UsedNS=no
3, 注释掉server上/etc/resolv.conf中所有行
4, 修改server上/etc/nsswitch.conf中hosts为hosts: files
5, reboot server使配置生效

另外,在authentication gssapi-with-mic也有可能出现问题,在server上/etc/ssh/sshd_config文件中修改:
GSSAPIAuthentication no
用命令:
 

复制代码 代码示例:
/etc/init.d/sshd restart

重启sshd进程使配置生效。

如果以上办法,还是无法解决问题,请用DEBUG MODE ssh -v来查看log,找到停滞时间最长的步骤,然后针对性的修改配置解决即可。