月度巡检导出全站 8 万条 URL,逐条请求要跑十几个小时,抽 5% 又总觉得漏掉了关键页面,比例一直定不下来。

一开始怀疑是「新发布页面需要全量覆盖,老页面可以低频抽样」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。纯随机抽样会把首页和栏目页也一起稀释掉。也可能是站点分层明显,详情页占九成但流量贡献不同。

还有一种情况,抽样后没有按分层还原比例,结论容易失真。

上来先按目录分层统计 URL 数量

curl -s https://www.example.com/sitemap.xml | grep -o '<loc>[^<]*' | cut -d/ -f4 | sort | uniq -c | sort -rn

然后核心层全量、长尾层抽样

shuf -n 2000 <(grep '/post/' urls.txt) > sample_post.txt

剩下的就是抽样后按分层权重折算整体指标

python sample_report.py --layers post:8000,list:1200,tag:2000 --sample sample_post.txt

改完先别撤,确认这几项。改成核心层全量加强制抽样长尾后,巡检时间压到两小时,连续三个月都准确抓到了栏目级的异常。

提醒一点。抽样比例不是拍脑袋定的,按目录分层、核心页全量,剩下的按流量权重分配,比单纯提高比例有效得多。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189