巡检脚本每次把 sitemap 里 10 万条 URL 全跑一遍 单线程加 1 秒间隔 一轮要 6 小时 早上八点开始下午才出结果 期间新出现的死链完全看不到
一开始怀疑是「单线程加固定间隔 吞吐上不去」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。全量巡检周期太长 覆盖率与时效性冲突。还有一种是没有做增量 每次重跑全部地址。
还有一种情况,历史结果没落库 无法判断哪些是新变化。
上来先把巡检结果落库并记录上次状态
python check.py --store sqlite://check.db
只跑上次异常和新增地址
python check.py --incremental --changed-since 1d
其余地址按天分片轮转
python check.py --shard 7/30
等前面都确认过,再确认单轮耗时
time python check.py --incremental
恢复的判定其实很直接。增量轮次十分钟内跑完 全量覆盖仍按周完成 新死链当天就能发现。
容易忽略的是,全量巡检的价值在覆盖 增量巡检的价值在时效 两者按频率分开跑 比一个都做不好强。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
