先看一个可操作的判据:如果突增流量退去后页面恢复原有速度,且错误率随流量同步升降,更可能是资源压力;如果流量已回落、单机负载正常,而某一类请求仍固定失败或固定变慢,更可能是配置错误。这个判据不保证一次命中,但能让你在几分钟内决定是扩容、改配置,还是先回滚。
突增期间最容易犯的错,是拿一个正在抖动的指标下结论。先确定一个观察窗口,例如十分钟,并同时记录四类数据:入口请求量、应用进程的CPU与内存、下游依赖(数据库、缓存、外部接口)的响应时间、以及错误响应的状态码分布。
判断资源压力的典型证据是:CPU或内存接近上限,请求排队时间变长,超时集中在处理耗时最长的路径上,流量回落后指标同步回落。判断配置错误的典型证据是:资源占用并不高,但某一类请求稳定返回同一状态码,或者同一份静态资源每次都在固定环节失败,与流量高低无关。
两者会叠加。例如连接池上限设置过小,平时够用,突增时表现为资源压力,本质却是配置容量不足。这时不要急着扩容,先确认瓶颈是否随实例数增加而线性缓解。
面对突增,你的选择通常不是“优化还是不管”,而是对当前这套配置保留、改写或退出。
这三个选项不要求同时成立。多数突增场景只需要其中一个,强行凑齐反而会掩盖真正的瓶颈。
把现象按“是否随流量变化”和“是否随实例数变化”两个维度交叉,能快速区分原因。
这里要提醒一点:请求量或抓取量归零,并不能单独证明你的处理正确。它也可能是采集端主动降频、网络中断或对方策略调整造成的。把归零当作唯一证据,容易把一次外部波动误判为自身优化生效。
假设某站点在突增期间变慢,运维先扩容应用实例,但错误率没有下降。进一步观察发现,静态资源的缓存命中率始终偏低,且每次请求都回源。这里有两种成立条件不同的解释:一是缓存容量不足,突增时被大量淘汰,属于资源压力;二是缓存键或缓存规则配置有误,导致本应命中的请求始终未命中,属于配置错误。
区分方法是看流量回落后命中率是否恢复。若恢复,偏容量问题;若长期不恢复,偏规则问题。动作上,前者提高缓存容量或调整淘汰策略,后者修正缓存键或规则。执行后如果命中率上升且回源请求下降,说明方向正确;如果命中率不变,应回到规则本身继续核查,而不是继续扩容。
无论最终判断是哪一类,都要留下可对比的基线:突增前的正常指标、突增期间的峰值指标、以及处置后的指标。没有基线,下一次突增你仍然只能凭感觉选择扩容还是改配置。
另外,涉及抓取限制与索引的配置要单独看待:robots.txt 的抓取限制不等于可靠的索引移除,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名提升。这些规则在突增期间可能被误当成性能手段使用,实际效果与预期往往不一致,需要分别核查后再决定是否保留。
最后,处置动作要有明确的退出条件:扩容在流量回落后是否缩回、临时降级是否恢复、回滚的配置是否重新评估。把这些条件写清楚,突增才是一次可复用的判断,而不是一次只能事后回忆的混乱。