事情本身不复杂,线索都在日志里。开 HTTP/3 后响应头里 Alt-Svc 写了 h3 走 443,但防火墙只放了 TCP,UDP 443 被丢弃,部分蜘蛛尝试 QUIC 失败后没有回退,抓取直接中断。

原因不止一个,得分开看。防火墙只放行 TCP 443,UDP 443 被丢包。另一种情况是Alt-Svc 的缓存时间设得太长,失败后仍持续尝试。

少数情况下是中间设备对 QUIC 不透明,握手被重置。

先看响应头里的 Alt-Svc

curl -sI https://www.example.com/ | grep -i alt-svc

然后确认 UDP 443 是否可达

nc -zvu www.example.com 443

末了清掉缓存看回退结果

curl -sI https://www.example.com/ -H 'Cache-Control: no-cache' | head -5

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

怎么算真的好了,看的是同一批现象。放开 UDP 或清掉 Alt-Svc 后,抓取量三天内恢复,日志里不再出现 QUIC 握手失败。

Alt-Svc 会被客户端缓存,端口没准备好之前别急着下发这个头。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189