MySQL连接过慢的一种情况
Case
开发测试中,测试服务器A和生产数据库服务器B位于内网同一网段,但是从服务器A连接数据库B大概需要10s的时间,命令行下ping,时间为0.001ms。
Why
对相关case进行搜索查询,查到了cnblogs上面这样一篇文章。
联想到之前远程登录ssh的时候,sshd的相关配置貌似也有一个DNS解析和反解的过程,估计大概就是这个情况。
MySQL为什么要对这个DNS进行反查呢?
原因大概是我们在授权GRANT
的时候,有时会授予root@a.com
这样的域名,所以MySQL就需要反查连接过来的IP到底是不是这个Domain呢。
禁用掉这个功能之后,肯定授权就只能IP了。
Solution
根据文章中的方法,需要进行mysql重启操作:
在my.cnf中添加如下配置
[mysqld]
skip-name-resolve
重启mysql服务
但是,这台服务器B是线上的生产数据库,不能随意重启,于是想到改数据库服务器B的hosts是否会生效呢?
# 在服务器B上面,对服务器A的内网IP写随便一个域名
192.168.1.1 ServerA
修改完成后,mysql的连接问题得到了解决。
Tips
DNS的确是基础服务一个不可或缺的部分,包括服务发现、服务降级在内,很多服务架构都需要这东西。
不过这也算小公司运维欠缺的一个坑吧。