先做一件事:把异常流量对正常服务的影响与证据固定分开处理。证据固定优先于清理和恢复,因为限流、封禁或切换节点都会改变现场,之后很难还原“当时到底发生了什么”。如果服务已经明显不可用,可以在保留入口日志和采样流量的前提下先做降级,但不要先删日志、先清缓存或先重启所有实例。
面对异常流量挤占资源,常见的三种反应是原样保留现场、对流量做改写后再放行、以及临时退出部分服务。它们成立的条件不同,选错会让后续判断失去依据。
一个可操作的判断是:如果异常流量还能被限流而不影响核心功能,优先保留;如果限流已经无法阻止资源耗尽,再考虑改写或退出。这个顺序会影响下一步能查到什么。
证据的价值取决于它能否对应到具体时间点和具体请求。建议按以下顺序固定,因为越靠近入口的数据越容易被轮转或覆盖。
如果入口日志已经按容量轮转,先确认轮转周期和保留份数,再决定是否需要临时扩大保留范围。这个动作的结果会直接影响后续能否还原异常开始的时间。
异常流量挤占资源,不一定都来自同一原因。下面这组对照可以帮助区分,而不是把所有异常都归为同一种解释。
假设一个场景:某接口的入口请求量在十分钟内上升,同时数据库连接数接近上限。如果入口日志显示来源分散、路径集中在少数接口,且缓存命中率没有明显下降,那么更可能是异常请求直接打到后端;如果缓存命中率同步下降,则应先检查缓存层是否失效。这个假设只用于说明比较方法,不代表真实项目结论。
证据固定完成后,不要急着下结论。先做两件事:一是把证据按时间线对齐,确认异常开始、资源耗尽和人工干预的先后顺序;二是把无法解释的部分单独列出,而不是用已有数据强行填补。
如果时间线显示资源耗尽发生在限流规则生效之前,那么限流动作本身没有造成现场破坏,可以继续基于现有证据分析。如果时间线显示资源耗尽发生在重启或清缓存之后,那么重启前的状态已经不可还原,后续只能依赖入口日志和外部监控数据。
对快速排名工具这类涉及外部请求来源的场景,还要注意一点:请求量或抓取量归零,不能单独证明处理正确。它也可能是来源主动停止、网络中断或采集窗口结束造成的。要区分这些解释,需要同时看入口日志、依赖日志和变更记录是否一致。只有多个来源指向同一时间点和同一类请求,判断才更可靠。
最后,把证据保存和恢复动作分开记录。恢复动作包括限流、扩容、切换和回滚,每一步都应记录执行时间和执行人。这样即使后续需要复盘,也能知道哪些现象是异常本身造成的,哪些是处理动作带来的。