先给结论:突增期间不要只看总请求数。把日志按“来源类型、目标路径、状态码、响应耗时”四个维度拆开,若大量请求集中在你明确允许抓取的正常内容上,且响应时间随并发上升而变长,更像资源压力;若请求集中指向已封禁路径、错误路径或robots.txt本身被反复读取并伴随异常状态码,则更像配置错误。两者可能同时存在,但处置顺序不同:先确认配置是否把爬虫引向了错误目标,再决定是否扩容或限流。
访问量突增时,最常见的误判是把“请求数上涨”直接等同于“服务器扛不住”。实际上,同一时间窗口内可能混着几类流量:正常内容抓取、被封禁路径的反复尝试、站点地图与robots.txt的重复读取、以及非搜索引擎的采集或扫描。它们对资源的影响方式不同,处置手段也不同。
一个可操作的起点是:在日志中先按User-agent分组,再按状态码分组。如果某个爬虫的请求几乎全部返回200,且目标是你希望被抓取的页面,那么它更可能是在正常消费内容;如果大量请求返回403、404或429,或者目标集中在Disallow列出的路径上,就要优先怀疑配置或抓取策略问题,而不是单纯扩容。
资源压力的典型证据是:请求目标与允许规则一致,但单位时间请求量超过当前服务能力。此时日志里常见的是200状态码占比高、响应耗时随并发增加而上升、数据库或后端服务出现排队。它不一定是爬虫“恶意”,也可能是站点地图或分页结构把大量URL暴露给了抓取端。
判断资源压力是否成立,可以看三个信号:
如果确认是资源压力,下一步是限流或缓存,而不是继续改robots.txt。因为此时封禁更多路径可能误伤正常抓取,反而让已收录页面得不到更新。
配置错误的典型表现不是“请求变多”,而是“请求变偏”。例如:Disallow误写导致本应允许的目录被整体封禁,爬虫转而反复请求被禁止的路径以确认状态;或者站点地图里仍包含已被封禁的URL,抓取端持续尝试后失败。另一种情况是robots.txt本身返回异常状态码或内容类型不正确,抓取端反复读取。
区分配置错误的关键证据是:请求目标与规则声明不一致,且失败集中在特定路径或特定状态码上。你可以临时在日志中标记出所有命中Disallow前缀的请求,如果它们在突增期间占比明显升高,配置错误的可能性就大于资源压力。
需要提醒的是,robots.txt的抓取限制不等于可靠的索引移除。即使你封禁了某条路径,已经索引的页面仍可能出现在结果中,抓取端也可能继续尝试访问以确认规则。因此,不能把“封禁后请求没降”直接当成配置无效,还要看请求是否转向了其他允许路径。
假设某站点在突增期间出现两种日志形态,可以用下面的对照方法判断:
Disallow路径、参数页或错误路径,偏向配置错误。这个验证动作的代价是:放开规则后可能短暂增加正常抓取量,因此要配合限流或缓存,避免把配置问题转成资源问题。
在突增期间,建议先做配置核查,再做容量决策。核查内容包括:robots.txt是否可正常访问、规则是否误封了重要目录、站点地图是否仍包含被封禁URL。确认配置无误后,再根据响应耗时和错误类型决定是否扩容、限流或调整缓存策略。
如果两种解释同时成立,优先修复配置错误,因为错误规则会持续把抓取引向无效目标,扩容只能缓解表面压力。若配置正确但请求仍集中且耗时上升,才进入资源压力处置。无论哪种情况,都不要把请求量归零当作唯一成功标准:请求下降也可能只是因为抓取端暂时降低了频率,并不代表配置或容量问题已经解决。