事情本身不复杂,线索都在日志里。开 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 会被客户端缓存,端口没准备好之前别急着下发这个头。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
