首页/网络/网络排障速查/dig +time/+tries:控制超时与重试
DNS 与解析排查46 条

dig +time/+tries:控制超时与重试

默认每个服务器 5 秒超时、重试 2 次:排查『解析偶尔卡 5 秒』时先缩短参数复现,再判断是哪个服务器在拖后腿。

网络排障速查网络更新于 2026-10-13

+time 与 +tries 控制什么

dig 对每个服务器默认等 5 秒超时、最多重试 2 次:一台不回应的 DNS 会让用户体感到「解析卡 5 秒」甚至更久。+time 改单次等待秒数,+tries 改重试次数,两者相乘决定最坏情况下的总等待。排查解析偶发卡顿时,先把参数收紧让失败快速暴露,再逐台服务器测试,就能看出是哪一台在拖后腿。

基本信息

命令dig(BIND 9 工具集,Linux/macOS 可用)
默认行为+time=5 +tries=2,失败后换下一个服务器
总耗时上界time × (tries + 1) 量级,多个服务器时叠加
相关配置/etc/resolv.conf 的 options timeout:N attempts:M(glibc 解析器)
权限要求普通用户即可

典型使用场景

  • 应用报「偶发卡 5 秒」:用 +time=2 +tries=1 复现并在日志里看到超时
  • 逐台验证内网 DNS:分别指定 @服务器,比较哪台异常
  • 脚本里做健康探测:需要快速失败而不是等满 5 秒
  • 核对 SERVFAIL 与超时的区别:+tries=1 减少重试造成的干扰
  • 配合 +search 验证短名补全在设备命名环境中是否生效

超时控制与逐服务器测试

超时控制与逐服务器测试
dig +time=2 +tries=1 example.com            # 快速失败,便于脚本化探测
dig +time=2 +tries=1 @10.0.0.53 example.com # 逐台测内网 DNS,超时的一目了然
dig +time=3 +tries=1 @8.8.8.8 example.com   # 与公网 DNS 对照
dig +search +time=3 host1                   # 启用 search 域补全,验证设备短名
dig +time=1 +tries=1 +stats example.com     # 带上统计信息,看 Query time 数值
# 观察 status 字段:NOERROR / NXDOMAIN / SERVFAIL / 超时(no servers could be reached)

结果判读

现象含义下一步
Query time 稳定偏大服务器本身慢或链路远换就近服务器,对比多个上游
no servers could be reached全部服务器无响应查网络可达性与 53 端口是否被拦
SERVFAIL服务器有响应但解析失败查上游转发与区域配置
NXDOMAIN域名不存在确认拼写与是否该走 search 域
首次慢后续正常缓存未命中或走了一次冷启动对比第一次与第二次的 Query time
glibc 解析器默认 timeout 5 秒、attempts=2,与 dig 的默认值取向一致;应用层「超时 10 秒」的体感异常常常来自这里,而不是应用自身逻辑。
排查期间连续采样更有价值:同一域名连查 10 次并记录 Query time,能区分「一直慢」与「偶发卡」,两者的根因完全不同。

易错点

  • 把 dig 默认 5 秒超时当成网络慢的证据:超时值本身可配置,先改小再复现才有意义
  • 多台 DNS 配置下不问是哪台慢:resolv.conf 按顺序尝试,第二台永远慢半拍的情况极常见
  • 把 +tries 调很大当作「提高成功率」:只会让最坏耗时成倍增长,真实故障被掩盖
  • +time 设得过短(如 1 秒)用在跨地域链路:正常查询也被判失败,产生大量误报

数据来源与参考

  • BIND 9 dig 手册(+time/+tries)
  • glibc resolver 配置(resolv.conf options)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌