先看突增是否伴随抓取成功率下降:如果服务器响应时间同步拉长、5xx 或超时占比上升,而 robots.txt、站点地图和关键页返回状态没有变化,更可能是资源压力;如果响应时间基本平稳,却集中出现 403、404、301 跳转异常或整段目录被拒,则更可能是配置错误。两者的处理顺序不同,误判会让下一步动作反向。
访问量突增时,日志里最直观的变化是请求条数上升。但请求条数上升本身不能说明问题出在资源还是配置,因为爬虫提高抓取频率、旧链接被重新访问、监控或代理流量混入,都会让条数上涨。真正需要看的是同一批 URL 的状态码分布和响应耗时是否发生结构性变化。
可以先把日志按小时切成两段:突增前和突增中。对每个小时分别统计三类比例:2xx 占比、3xx 与 4xx 占比、5xx 与超时占比。再对同一组重点 URL 比较平均响应时间。这个切分不需要复杂工具,用命令行过滤状态码即可完成,目的是让两组解释各自留下可检验的痕迹。
资源压力的典型特征是影响面广且与负载同步。数据库连接池耗尽、带宽打满、应用进程排队,会让不同目录、不同模板的页面一起变慢,5xx 和超时集中在高峰时段,低谷时段自行缓解。此时 robots.txt 和站点地图往往没有改动,返回状态也仍然是原来的规则。
判断资源压力可以做一个动作:在突增时段对一组已知正常的静态页和动态页分别发起少量请求,记录响应时间。如果两类页面都变慢,且变慢程度与请求并发量相关,资源压力的解释就更成立。下一步应先限流、扩容或调整缓存,而不是急着改抓取规则,因为规则改动无法缓解排队。
配置错误的特征是有选择性。比如某条新加的限制规则只覆盖一个目录,或者反向代理把带特定参数的 URL 统一返回 403,或者站点地图里写入了已经下线的旧路径。此时整体响应时间可能正常,但错误集中在特定路径、特定参数或特定 UA 上。
区分配置错误可以看错误是否与 URL 形态相关。把 4xx 和异常 3xx 的 URL 按目录、参数、扩展名分组,如果某一组占比异常高,而其他组正常,配置层面的解释更合理。另一个动作是直接请求一条出错 URL,观察返回头中的跳转目标和状态码来源;如果跳转链指向旧域名或旧目录,说明是规则遗留而非容量不足。确认后下一步是修正规则或清理站点地图,而不是扩容。
下面这些信号可以帮助作决定,但要注意它们不是单独成立的证据:
需要提醒的是,请求量或抓取量归零并不能单独证明某次处理正确。它也可能是爬虫自然降低频率、外部流量退去或监控口径变化造成的。把归零当作唯一结论,容易掩盖仍然存在的规则问题。
假设某站在一次活动期间日志请求量翻倍,同时 5xx 从很低水平升到可见比例,响应时间从数百毫秒升到数秒。若此时先改 robots.txt 限制抓取,短期可能减少请求,但用户访问同样会受影响,且无法证明瓶颈在爬虫。更合理的动作是先确认应用和数据库的排队情况,必要时限流非关键流量,观察 5xx 是否随并发下降。如果 5xx 下降而 4xx 仍集中在某个旧目录,再处理该目录的规则遗留。这个顺序让每一步的结果都能反过来验证上一步的判断。
如果反过来,响应时间平稳但某目录突然大量 403,且该目录刚经历过权限或跳转配置调整,那么应优先回看配置变更记录,而不是扩容。扩容对选择性拒绝没有帮助,只会增加成本。
访问量突增常与旧内容、旧系统或旧合作关系的退出同时发生。处理时不必整站封锁:先确认哪些路径仍有真实价值,保留其正常返回和内部链接;对确实要下线的部分,用明确的 404 或 410 表达,而不是用全站规则一刀切。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,因此下线决策应落在状态码和链接清理上,而不是只依赖限制规则。
最后要分别核查不同搜索引擎对同一规则的支持情况,因为同一份配置在不同爬虫上的行为可能不一致。把资源压力与配置错误分开之后,下一步动作才有明确对象,也才能在突增结束后回头验证当初的判断是否成立。