DNS 缓存引起的问题排查

DNS 缓存引起的问题排查及解决

引言

最近遇到一个问题是由于 DNS 缓存引起的。这里记录下。

DNS 缓存引起的问题排查及解决

故障现象

运营反映某平台的游戏服不能登录。

问题排查及分析解决过程

  1. 因为是运营那边反映(运营会先测试登录服务器),可以排除玩家自己本地的问题。
  2. 并没有该服务器相关的报警信息,查看服务器系统和网络监控都是正常,可以证明服务器系统及网络正常。
  3. 检查游戏程序,相关进程和端口都是正常状态。
  4. 此时运维这边不太好查了,继续让研发查看游戏程序的日志信息,发现游戏服程序无法连接游戏中心服务器。
  5. 运维这边验证游戏服和中心服连通性,使用的 Ping 程序,网络是连通的。
  6. 研发提供运维这边无法连接中心服的日志,运维这边查看后,发现游戏程序连接中心服域名解析的 IP 和 Ping 程序返回的 IP 不同, Ping 程序返回的 IP 是正确的,然后运维这边确认了这台中心服不久前做过迁移, 游戏程序解析的 IP 还是之前的中心服 IP,运维初步判断游戏程序对 DNS 解析做了缓存
  7. 经研发确认,游戏程序确实做了 DNS 缓存。
  8. 运维建议研发游戏程序不要做 DNS 缓存,因为游戏服务器的域名解析变化比较频繁。
  9. 研发对游戏程序进行修改,不缓存 DNS 解析记录。

在以上过程中,我们发现 Ping 程序返回的 DNS 解析 IP 是最新的 IP。
之前我还以为 Linux 系统(非 bind 之类的 DNS 服务器)会像 Windows 系统一样对 DNS 做缓存,其实并不会。   具体我以前稍微研究过。Linux 下清除 DNS 缓存