访问量突增时,先看错误是否随请求量同步放大:如果只在高并发时段出现、单请求复现不了,多半是资源压力;如果在低流量下也能用固定请求稳定复现,更可能是配置错误。判断顺序应是先压出可复现的最小请求,再决定保留现有架构、改写配置还是回退变更。
突增期间最容易犯的错,是把“平时正常、现在报错”直接归为容量不足。更有效的做法是:从日志里挑一条失败请求,去掉并发,单独重放。若单条重放正常,逐步加并发直到失败,记录失败时的并发量和耗时曲线;若单条重放就失败,问题基本不在资源,而在配置或上游依赖。
这个动作会直接影响下一步:能通过降并发恢复的,属于资源压力,优先考虑限流、扩容或缓存;单条就失败的,应停止扩容,转去核对最近变更过的解析、回源、重写规则和证书配置。扩容对配置错误通常无效,只会掩盖症状并增加成本。
第一类看错误分布。资源压力往往表现为超时、连接被拒、队列等待变长,且不同路径按资源占用比例一起变差;配置错误常集中在特定路径、特定 Host 或特定参数上,其他路径完全正常。第二类看时间相关性:资源压力与流量曲线高度同步,流量回落即恢复;配置错误在流量回落后仍可能残留,因为触发条件没消失。第三类看变更历史:如果突增前刚改过解析记录、回源地址或重写规则,配置错误的嫌疑显著上升。
需要注意,请求量或抓取量归零本身不能证明处理正确。它也可能是上游限流、监控采样中断、日志管道堵塞或客户端重试策略改变造成的。把这些合理解释排除掉,再下结论。
保留现有配置适用于:单请求可复现失败,但失败点在上游依赖或第三方接口,且该依赖有明确的重试与降级路径。此时保留配置、只调整重试与超时参数是合理的。
改写配置适用于:失败集中在某条规则上,例如重写、跳转或缓存键设置导致同一资源被反复回源。改写前应先在低流量环境验证,确认改写后单请求与并发请求都通过,再放量。改写的结果会决定是否还需要扩容:若改写后并发承载明显上升,扩容可以推迟。
退出或回退适用于:突增前有过变更,且回退后错误立即消失。回退是验证因果最快的手段,但它只是止血,不是结论。回退后仍需在隔离环境复现原变更,弄清触发条件,否则下次突增会重演。
假设某站点在促销期间错误率从 1% 升到 8%,日志显示超时集中在图片路径。若单张图片请求在低并发下正常,并发升到某阈值后开始超时,且 CPU 与连接数同步逼近上限,可先按资源压力处理:加缓存、限流、扩容。若单张图片请求在低并发下也稳定超时,而其他路径正常,则应检查图片路径的重写规则或回源配置,此时扩容不会解决问题。这个例子只说明比较方法,不代表任何真实站点的数据。
无论最终归因为哪一类,都应留下可复核的记录:失败请求样本、复现时的并发量、变更时间线、回退前后的对比。这样在下一轮突增时,团队不必重新争论归类,而是直接按已验证的路径处理。对域名注册购买相关的解析、跳转和证书配置,尤其要保留变更前后的解析快照,因为这类变更的生效时间与传播范围常常不一致,容易在突增期间被误判为容量问题。