2014 年 9 月 8 日下午 4 时左右,LUG 权威 DNS 服务器上托管的所有域名均解析失败。

经查,这是 9 月 7 日 15:48 分在 LUG 权威 DNS 服务器上由于未知原因导致 BIND 服务占用大量内存,触发了内核的 OOM Kill 机制,导致 BIND 服务被杀掉。因我们内部监控系统暂不完善,此事件没有被第一时间发现。经过了 24 小时之后, mirrors 上的 Slave DNS 服务器上的记录因超时而失效,从而导致LUG 权威 DNS 服务器上托管的所有域名均解析失败。

9 月 8 日 16:14 分重新启动 BIND 服务之后发现,BIND 服务一直占用接近 100% 的 CPU 资源。在 BIND 的日志中可以看出,在服务器配置的不同 VIew 间数据同步时出现了死循环。这导致 SOA 记录中 Zone 的序列号疯涨。

从 strace 中可以看出,BIND 服务器频繁获取 DNSSec 签名所用的私钥,故初步断定问题由 DNSSec 引起,在关闭 DNSSec 支持后重启 BIND 后,系统负载回归正常,问题解决。

此次事件暴露出了我们服务器内部监控不足的问题,我们会尽快建立起完善的服务监控体制,以便在服务器出现问题时第一时间获得通知。此外,我们正在努力探明数据同步时出现了死循环的触发条件,如有发现我们会在此博客上及时发布。