接口 P99 比本机高 30 毫秒,抓包看到每个外部域名前面都有四次 A 查询,全部 NXDOMAIN 之后才查对。容器里 resolv.conf 写着 options ndots:5。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,ndots 表示名字里点的数量少于这个值就先按 search 域补全,逐条试完才走绝对域名。访问 api.example.com 有两个点,小于 5,于是先拼集群域名查了四遍。

「ndots 解析延迟」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

kubectl exec api-0 -- cat /etc/resolv.conf
kubectl exec api-0 -- getent hosts api.example.com.
kubectl exec api-0 -- cat /etc/nsswitch.conf

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

具体做法是,先看容器里的 resolv.conf 确认 ndots 的实际值;调用外部域名时在末尾补一个点 让它按绝对域名解析;或者把 ndots 调到 2 减少无谓查询 注意集群内部短名仍要能解析;改完用抓包确认查询次数下降。

最后用这个标准收尾,抓包里每个外部域名只剩一次查询,接口 P99 回落 20 毫秒以上。

作者 9823189