先看一个可观察的分界:如果突增同时出现在多个来源(自然搜索、直接访问、站内跳转),且服务器指标如CPU、内存、连接数同步上升,更可能是资源压力;如果只有某类抓取或某个路径的请求暴涨,而CPU、内存平稳,却伴随大量4xx、5xx或超时,更可能是配置错误。对已有实际业务的站点来说,这个判断直接决定下一步是扩容、限流,还是回滚配置。
不要同时打开所有监控面板。选一个具体对象,例如最近一小时某关键页面的访问日志,或某个收录入口页面的响应记录。围绕它收集四类信息:请求来源、请求路径、响应状态、服务器资源占用。来源用于区分是搜索抓取、平台推荐还是广告落地;路径用于判断是否集中在少数URL;状态码用于发现配置拒绝;资源占用用于判断是否达到瓶颈。
如果日志里同一个URL的请求量在短时间内翻倍,但状态码全是200,且CPU、内存没有明显变化,先不要急着改配置。此时更合理的动作是继续观察十分钟,并对比该URL的缓存命中率。缓存命中率上升说明请求被缓存承接,压力没有落到应用层;命中率下降则说明每个请求都在穿透到后端,资源压力可能正在积累。
资源压力的典型证据是:多个来源同时增长,响应时间随请求量上升而变长,错误以超时和5xx为主,且重启或扩容后错误下降。配置错误的典型证据是:请求集中在少数路径或特定User-Agent,响应时间没有明显变长,错误以403、404、405或重定向循环为主,且回滚配置后错误立即消失。
假设一个场景:某页面在广告投放开始后请求量突增,服务器CPU从30%升到80%,同时出现少量502。这更像资源压力,因为请求来自广告落地,且资源曲线与请求量同步。另一个假设场景:同一页面在站点地图更新后请求量突增,但CPU平稳,大量请求返回404,且这些404都指向旧路径。这更像配置错误,因为资源没有压力,错误集中在路径映射上。
这两个假设不冒充真实项目结果,只用于说明区分方法:先看资源曲线是否随请求量变化,再看错误是否集中在配置相关状态码。两者都成立时,优先处理配置,因为配置错误会让资源压力看起来更严重;两者都不成立时,继续收集样本,不要凭单次突增下结论。
当你判断更接近资源压力时,可以对可疑路径做限流,而不是直接全站扩容。动作是:在反向代理或应用层对单个路径设置每秒请求上限,保留日志,观察十分钟。如果限流后5xx下降、响应时间恢复,说明瓶颈确实在该路径的资源消耗;下一步是优化该路径的缓存或查询,而不是继续加机器。如果限流后错误没有下降,反而出现更多403或499,说明限流规则本身可能误伤了正常抓取或正常用户,需要回滚并重新检查来源分布。
当你判断更接近配置错误时,动作是回滚最近一次配置变更,并对比回滚前后的状态码分布。如果404或403在回滚后消失,说明配置是主因;如果错误仍然存在,说明配置只是表象,需要继续检查上游重写规则、站点地图中的路径是否与实际URL一致,以及robots.txt是否限制了不该限制的路径。注意,robots.txt的抓取限制不等于可靠的索引移除;站点地图也不保证收录。这些工具只影响抓取行为,不能替代对错误日志的逐条核对。
如果资源曲线与请求量同步上升,且错误以超时为主,下一步是扩容或优化缓存,并保留限流作为保护。如果资源平稳但错误集中在4xx,下一步是核对配置与URL映射,而不是扩容。如果两者同时出现,先回滚配置,再观察资源曲线是否恢复;恢复则说明配置是触发器,不恢复则说明资源本身已接近上限。
还要注意一个反常现象:访问量突增后,如果抓取量或请求量突然归零,不能单独证明处理正确。它可能是限流生效,也可能是抓取方主动降低频率、配置拒绝了所有请求,或监控采集本身中断。此时应检查日志是否仍在写入、状态码是否从5xx变成403,以及服务器资源是否同步下降。只有多个信号一致,才能把归零解释为处理有效。
最后,把这次判断写成一条可复用的检查线:来源分布、路径集中度、状态码类型、资源曲线。下次突增时,先对照这条线,再决定是扩容、限流还是回滚。这样处理的结果会直接影响下一步:扩容后仍报错,说明问题不在资源;回滚后仍报错,说明问题不在配置。