DNS 缓存引起的问题排查及解决
引言
最近遇到一个问题是由于 DNS 缓存引起的。这里记录下。
DNS 缓存引起的问题排查及解决
故障现象
运营反映某平台的游戏服不能登录。
问题排查及分析解决过程
- 因为是运营那边反映(运营会先测试登录服务器),可以排除玩家自己本地的问题。
- 并没有该服务器相关的报警信息,查看服务器系统和网络监控都是正常,可以证明服务器系统及网络正常。
- 检查游戏程序,相关进程和端口都是正常状态。
- 此时运维这边不太好查了,继续让研发查看游戏程序的日志信息,发现游戏服程序无法连接游戏中心服务器。
- 运维这边验证游戏服和中心服连通性,使用的 Ping 程序,网络是连通的。
- 研发提供运维这边无法连接中心服的日志,运维这边查看后,发现游戏程序连接中心服域名解析的 IP 和 Ping 程序返回的 IP 不同, Ping 程序返回的 IP 是正确的,然后运维这边确认了这台中心服不久前做过迁移, 游戏程序解析的 IP 还是之前的中心服 IP,运维初步判断游戏程序对 DNS 解析做了缓存
- 经研发确认,游戏程序确实做了 DNS 缓存。
- 运维建议研发游戏程序不要做 DNS 缓存,因为游戏服务器的域名解析变化比较频繁。
- 研发对游戏程序进行修改,不缓存 DNS 解析记录。
在以上过程中,我们发现 Ping 程序返回的 DNS 解析 IP 是最新的 IP。
之前我还以为 Linux 系统(非 bind 之类的 DNS 服务器)会像 Windows 系统一样对 DNS 做缓存,其实并不会。
具体我以前稍微研究过。Linux 下清除 DNS 缓存