TTL 能读出什么
响应中的每条记录都带一个存活时间,表示这条答复还能被缓存多久。解析器在有效期内直接用本地结果回答,取不到才回源。因此抓包时对比同一解析器对同一域名的两次返回,就能读出两种情况:第二次数值比第一次小说明命中了缓存;两次数值相同且间隔很近,则说明缓存没有生效,可能是存活时间设置过短,也可能是这条查询绕过了缓存路径。
基本信息
| 适用平台 | Wireshark / tshark,任何 DNS 流量 |
|---|---|
| 相关字段 | dns.resp.ttl、dns.cache_flush |
| 观察方式 | 同一解析器上同一域名的多次响应数值对比 |
| 取值含义 | 数值为 0 表示不缓存,每次查询都必须回源 |
典型使用场景
- 评估缓存是否生效,判断查询量是否可以下降
- 排查切换记录后生效缓慢,确认旧值仍在缓存期内
- 核算解析器负载,估算缓存命中能省下多少上游查询
- 验证新增缓存层或调整存活时间后的实际效果
- 分析页面加载中域名解析次数偏多的原因
- 为变更窗口安排提供依据:存活时间越长,变更生效越慢
观察要点
观察要点
# 同一解析器第二次查询:数值应比第一次小(缓存剩余时间)
# 若两次数值相同且间隔很近:可能未缓存或直连查询
dns.resp.ttl < 60 # 筛出极短存活时间的答复
dns.resp.ttl == 0 # 完全不允许缓存
# 结合查询总量与业务请求量估算缓存命中率观察项逐项读法
| 观察项 | 含义 | 判读方向 |
|---|---|---|
| 第二次数值变小 | 命中缓存 | 缓存正常工作,费用与延迟都可降 |
| 两次数值相同 | 未命中缓存 | 查是否直连查询或缓存被绕过 |
| 数值为 0 | 禁止缓存 | 每次都要回源,查询量随请求线性增长 |
| 数值极短 | 快速生效优先 | 利于变更,代价是回源频率升高 |
缓存命中率提升后抓包中的查询量会明显减少,这是评估优化收益最直接的证据。
按客户端网段返回不同地址的调度方案里,缓存所在位置会决定客户端最终拿到哪一组地址,排查时要确认缓存节点位置。