问题出现得很突然,日志倒是留得挺全。服务器开了 IPv6 优先,解析模型网关域名先拿到 IPv6 地址,但网关只监听了 IPv4,客户端连了 20 秒才回退,首字延迟整体被拉高。
刚开始盯着「网关监听地址只绑了 0.0.0.0,没有 v6 监听」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。解析结果优先返回 AAAA,而目标并没有真正提供 v6 服务。另一种情况是客户端没有启用快速回退,串行等待 v6 连接超时。
少数情况下是防火墙放行了 v6,但 v6 路由本身不通。
先分别查 A 与 AAAA 记录
nslookup -type=AAAA api.example.com
随后确认网关实际监听地址
Get-NetTCPConnection -LocalPort 443 | Select-Object LocalAddress
强制走 IPv4 做对照测连接耗时
curl -4 -s -o /dev/null -w "%{time_connect}\n" https://api.example.com/v1/models
等前面都确认过,再打开双栈快速回退
python -c "print('happy_eyeballs_delay=0.25')"
改完先别撤,确认这几项。首包时间从 20 秒降到 1 秒以内,连接日志显示握手走的是 IPv4,请求返回 200。
提醒一点。回退慢是症状不是根因,能补 AAAA 就补,补不了就让客户端优先 v4,别只调超时参数。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
