先把当时的情况摆出来。巡检每天上午十点执行,每次都是全绿,可索引量一直在掉,翻日志发现蜘蛛集中在凌晨三点抓取,那个时段源站因为备份任务频繁 502。
原因不止一个,得分开看。巡检时间与蜘蛛抓取高峰完全错开。还有一种是备份任务在凌晨跑,没有和抓取时段做隔离。
另外,监控只记录巡检时刻的快照,没有留存全天曲线。
先看蜘蛛的抓取时段分布
awk '/Googlebot/{print substr($4,14,2)}' access.log | sort | uniq -c | sort -rn | head
接着确认凌晨的 5xx 数量
awk '$4 ~ /:0[2-4]:/ && $9>=500' access.log | wc -l
末了把备份任务挪到流量低谷之后并加限速
ionice -c3 rsync -a --bwlimit=20M /data/ /backup/
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
恢复的判定其实很直接。调整备份窗口并加限速后,凌晨的 5xx 从每小时 400 条降到个位数,抓取量在三天内回升。
容易忽略的是,巡检时间要跟着蜘蛛的作息走,选一个站点最闲的时刻去体检,等于什么都没查。这类问题最好一次改到位,反复小改反而容易把原因搅混。
