先看一个可操作的判别原则:如果爬虫请求量上升的同时,服务器响应时间、错误率和带宽占用同步走高,并且回落到正常量级后指标随之恢复,更可能是资源压力;如果请求量并不高、但大量请求集中打到同一批已下线或已迁移的地址,并伴随固定的状态码模式,更可能是配置错误。两者可以同时存在,所以先分清主因,再决定是扩容、限速,还是改规则。
访问量突增最常见的误判,是把所有压力都归给爬虫“变凶了”。实际上有两种成立条件完全不同的解释。
两种解释对应的动作方向相反:前者要提升承载或控制抓取节奏,后者要修正规则和链接。搞反了,扩容只是把浪费的请求也一起放大。
按URL聚合日志,看增量是摊在很多地址上,还是集中在少数路径。假设某站日常每小时收到一万次爬虫请求,突增到五万次;如果其中四万次都落在同一个已下线的列表页及其分页参数上,这更像配置或链接问题,而不是整体容量不足。反过来,如果五万次分散在数千个有效商品页上,且每页都返回正常内容,资源压力解释更站得住。
把状态码和响应时间交叉看,比单看任何一个都有效。
200 且响应时间随并发上升而变长:偏资源压力。404、410 或 301 链,且响应很快:偏配置与链接问题。5xx 且集中在特定时段:先查该时段是否有发布、备份或第三方调用,不能直接归因于爬虫。429 或 503:说明限速或保护已经触发,此时要确认这是主动策略还是被动崩溃。需要提醒的是,请求量或抓取量归零、某项统计突然下降,都不能单独证明处理正确。它可能是限速生效,也可能是爬虫暂时降低频率、网络抖动、日志采集中断,或对方调整了抓取策略。要结合前后时段的对照才能下结论。
如果近期改过 robots.txt、站点地图、跳转规则或页面模板,就把改动时间点和请求曲线对齐。配置类问题往往在改动后出现固定模式,而资源压力通常跟业务高峰、发布节奏或外部引用同步。站点地图不保证收录,robots.txt 的抓取限制也不等于可靠的索引移除,所以不要用“我已经屏蔽了”当作问题已解决的证据,仍要看日志里的实际请求。
建议先做按路径聚合的请求分类,而不是先扩容。动作是:取突增时段与前一同时段的日志,按URL前缀、状态码、响应时间三列汇总,找出贡献增量最大的前若干路径。
这个动作的结果直接决定下一步:
410 或指向最相关的新地址,清理站内残留入口。做完后再观察同一批路径的请求是否下降。旧内容、旧系统或旧合作关系退出时,保留仍有价值的部分是合理的,但退出动作要成组完成,否则就会制造上面说的集中请求。需要一起检查的通常是:旧入口是否还有站内链接、旧跳转是否形成链、旧站点地图是否仍列出已删地址、旧合作方页面是否仍指向你的失效路径。
判断是否保留某个旧地址,可以看它是否仍有真实外部引用和有效内容承接。若保留,就让它返回正常内容并保持可访问;若退出,就给出明确的状态码,而不是让它长期返回模糊结果。不同搜索引擎对状态码和规则的支持情况需要分别核查,不能假设一处设置对所有来源都等效。
最后回到判别本身:资源压力和配置错误不是互斥标签,而是两个需要排序的原因。先用请求集中度分出主次,再用状态码和响应时间验证,最后用改动前后对照确认因果,这样突增期间的动作才不会互相抵消。