这个坑值得记一笔。同一域名有时能解析有时报找不到主机,换了两组解析服务器之后问题依旧,高峰期更明显。
真正麻烦的地方在于,几个原因的现象几乎一样。解析请求超时,重试没有生效;本地缓存里存了失败的记录;并发请求过多,把解析服务的配额打满。
反复解析看失败比例
for i in $(seq 1 20); do dig +short 域名; done
再往下确认用的解析服务器
cat /etc/resolv.conf
然后检查本地缓存服务状态
systemctl status systemd-resolved
调大超时和重试次数
dig +time=3 +tries=3 域名
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
改完先别撤,确认这几项。连续多次解析全部成功,业务侧域名请求不再出现找不到主机。
这里还有个坑。应用侧的连接池和解析缓存会放大问题,排查时要同时看系统解析和程序配置两处。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。