先给结论:如果访问量突增期间404或5xx的分布集中在某类URL、某个目录或某个参数形态,而同期的响应时间与错误率没有同步恶化,优先怀疑配置错误;如果错误随并发上升而扩散、超时与连接失败占比升高,且回落到原流量后自动消失,优先怀疑资源压力。这个判断有前提:你需要能拿到按URL、按状态码、按时间分桶的日志,而不是只看总量。若日志被采样、被CDN合并或只保留聚合计数,这个结论就会失效,此时任何区分都只是猜测。
资源压力的典型形状是“跟着流量走”:并发上来,错误率上升;并发回落,错误率下降,中间没有明显的URL偏好。配置错误的典型形状是“跟着规则走”:流量上来只是让原本就存在的错误暴露得更明显,错误集中在特定路径、特定参数或特定跳转链上,即使总请求量不大,那类URL也会稳定报错。
实际操作上,把突增窗口切成若干分钟一桶,分别统计各状态码的数量和占比,再对比突增前同一时长的基线。如果404的绝对量上涨但占比基本不变,多半是爬虫或用户跟着新入口多访问了原本就不存在的地址;如果404占比突然抬升且集中在某个目录,更像是重写规则、路由或大小写处理出了问题。
下面这组对照可以帮助你在两种解释之间做取舍,每一条都要求你能拿到对应数据,拿不到就不要用它下结论。
假设某站点在促销开始后十分钟内404数量从每分钟20条涨到600条。如果这600条里九成集中在/product/detail?id=这类带参数的地址,而同一时段成功页面的P95只从300毫秒升到350毫秒,那么更合理的解释是路由或参数解析规则在这次发布中被改动,而不是服务器扛不住。反过来,如果404只涨了两倍,但504从0涨到每分钟80条、成功页面P95翻了三倍,那么更合理的解释是后端连接池或数据库连接被打满。这个例子只说明比较方法,不代表任何真实站点的表现。
有一种情况会让上面的判断全部失效:突增流量本身携带大量畸形请求,同时后端又刚好在扩容或限流。这时错误既跟着流量走,又集中在特定形态上,资源压力与配置错误的证据会重叠。另一个反例是日志链路本身出问题——采集端在高压下丢日志,你看到的“错误集中在某目录”可能只是那部分日志恰好没被丢掉。遇到这两种情况,先修复观测能力,再谈归因。
如果证据指向配置错误,下一步不是加机器,而是把报错URL与最近一次路由、重写、跳转配置的差异做比对,并在预发环境用同样的URL形态回放;回放通过后再决定是否回滚。如果证据指向资源压力,下一步是确认瓶颈在应用、数据库还是连接层,再决定扩容还是限流,同时观察扩容后错误率是否随并发下降而同步下降。两种路径的分岔点在于:配置修复后,低流量下报错URL应当立即恢复;资源扩容后,报错应当随并发回落而减少,而不是永久消失。做完这一步再决定要不要继续深入排查,比在突增当时同时改配置和扩容要可靠得多。