先看一个可区分的信号:如果同一台服务器上所有站点或所有路径都同时变慢,更像资源压力;如果只有某类 URL、某个目录或某个参数组合出问题,而其他路径正常,更像配置错误。访问量突增时两者常同时出现,所以不要只看总流量,要按路径分组看响应码和耗时。
把日志按“主机名 + 路径前缀 + 响应码”分组,观察突增时段内哪一组先恶化。资源压力的典型特征是:多个不相关的路径一起变慢,5xx 随并发上升,静态文件和动态页都受影响。配置错误的典型特征是:只有特定规则命中的 URL 异常,例如带参数的收录网址返回 404、403 或跳转到错误地址,而首页和栏目页仍然正常。
假设某站在推广开始后抓取请求翻倍,日志显示 /list?page=2 这类带参数地址大量返回 500,而 /list 本身正常。此时先不要扩容,应该先检查该参数是否触发了规则冲突或后端查询异常。反过来,如果所有路径的响应时间一起从 200ms 升到 2s,且 CPU 和连接数同步打满,才优先按资源压力处理。
资源压力通常有可观测的先行指标:并发连接数、CPU、内存、磁盘 I/O、数据库连接池使用率。突增期间这些指标如果同步接近上限,且响应变慢发生在多个路径上,就可以先做限流和缓存,而不是改配置。
例外:如果限流后只有部分路径恢复,其他路径仍然异常,说明资源压力只是放大器,底层还有配置或代码问题,需要回到分组日志继续定位。
配置错误更隐蔽,因为服务器资源可能完全正常。重点检查三类遗漏条件:重写规则是否把带参数的收录网址指向了不存在的路径;robots.txt 是否意外屏蔽了某个目录;站点地图里提交的地址是否与服务器实际返回的地址不一致。
一个可执行动作是:从日志中抽出一组异常 URL,用相同请求头逐个访问,记录状态码和最终地址。如果同一路径加参数就失败、去掉参数就成功,问题在规则或参数处理;如果所有地址都返回 403,问题可能在访问控制或防火墙策略。
需要注意,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。排查配置错误时,不要因为提交了站点地图就默认地址一定可访问,必须用实际请求验证。
当资源压力和配置错误同时存在,优先做“不改变规则的可逆动作”:先限流、先缓存、先保留现场日志。原因是配置改动会改变请求分布,一旦改错,后续很难判断原来的异常是资源问题还是规则问题。
如果复测后异常 URL 恢复正常,而其他路径没有恶化,说明该配置项是主因;如果异常 URL 没变但整体变慢,说明改错了方向,应回退并重新按路径分组。
访问量突增期间,最有效的区分方法不是猜,而是提前准备好按路径分组的监控和一组固定复测 URL。这样突增发生时,你能在几分钟内看出是“大家一起慢”还是“只有某类收录网址坏”。前者按资源处理,后者按配置处理,两者的动作顺序和回退方式完全不同。
如果已经尝试常规做法仍未解决,优先检查那个被忽略的条件:异常是否只出现在带参数的收录网址上,以及这些地址在突增前后是否被某条规则重新匹配。把这个条件验证清楚,再决定扩容还是改配置。