站点带宽监控每天凌晨 3 点到 4 点打满,正好和蜘蛛抓取高峰重叠,那一个小时里蜘蛛请求的超时率超过 30%,白天却完全正常。
真正麻烦的地方在于,几个原因的现象几乎一样。备份任务和数据库导出都排在 3 点,磁盘和网络同时被占;CDN 日志回传也在同一时段,出口带宽被挤占;抓取高峰叠加日志切割,Nginx 写盘出现瞬时阻塞;定时生成的 sitemap 让蜘蛛在生成期间集中来抓。
先按小时统计蜘蛛超时率
awk '$0~/Googlebot/ && $9>=499{print substr($4,2,14)}' access.log | sort | uniq -c
随后列出该时段的定时任务
crontab -l | grep -E '^0?3|^\*/'
再往下看备份任务的实际耗时与带宽
grep -i backup /var/log/syslog | tail -20
末了把备份错开到抓取低谷并限速
0 5 * * * ionice -c3 rsync -a --bwlimit=8000 /data/ /backup/
恢复的判定其实很直接。备份挪到 5 点并限速后,凌晨的超时率降到 3% 以下,蜘蛛抓取量在同一时段回升四成。
抓取时段由蜘蛛自己决定,能调的是本机的资源占用,把重任务错开比限制蜘蛛更现实。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
