先做资源隔离,再保存证据:把异常流量挡在业务之外,同时让原始日志和监控数据保持可追溯。不要先删日志、清缓存或重启服务,这些动作会破坏现场。如果异常流量仍在持续,优先限流而不是封禁全部来源;如果已经停止,优先做完整快照而不是继续清洗数据。证据保存的目标不是立刻找出谁在攻击,而是让后续判断有可复核的依据。
两种条件下的选择不同。条件一:异常流量仍在持续,且已经影响下单、登录或接口响应。此时应先做限流和资源隔离,再保存证据。条件二:异常流量已经明显回落,业务指标开始恢复。此时应先做完整快照,再决定是否调整规则。
判断依据不是单一指标。请求量突然升高、某个接口响应变慢、带宽接近上限,都可能由正常促销、爬虫抓取、缓存失效或上游重试引起。把请求量归零当作处理正确的证据并不充分,它也可能意味着监控中断、日志采集失败或流量被上游拦截。更稳妥的做法是同时看三类信号:服务资源占用是否异常、请求来源分布是否突变、业务转化是否同步下降。三者同时出现时,异常流量挤占资源的可能性更高。
当异常流量仍在持续,第一步是隔离,不是清理。可在反向代理或负载均衡层对异常来源做限流,保留正常用户通道。限流规则要记录生效时间、匹配条件和阈值,因为后续需要知道哪些请求被挡下、哪些请求仍进入应用。
第二步是保存可复核的原始材料。至少包括:访问日志、应用错误日志、监控面板的时间序列数据、限流规则变更记录。日志如果按小时滚动,先复制当前时段文件到独立存储,不要在原目录上继续写入。监控数据如果只保留短期窗口,先导出异常时段的数据点。
第三步是标记时间线。用统一时间戳记录异常开始、限流生效、业务指标变化、人工介入等节点。时间线不需要复杂工具,一份按时间排序的文本记录即可。它的作用是让后续分析能区分“异常流量导致资源挤占”和“资源本身先出现故障”。
假设一个场景:某业务在晚间出现接口超时,监控显示请求量约为平日的数倍,同时某几个来源的请求集中在同一接口。此时先限流这些来源,再保存限流前后的日志和监控数据。如果限流后接口恢复,说明资源挤占与异常请求有关;如果限流后仍超时,说明还有数据库、缓存或代码层面的问题。这个假设只用于说明比较方法,不代表真实项目结论。
当异常流量已经回落,优先做完整快照。快照范围包括:异常时段的原始日志、监控数据、配置变更记录、发布记录、第三方服务状态记录。如果业务使用了CDN或云防护,保存其提供的请求分析数据,但不要只依赖平台侧摘要,应用侧日志仍是核对依据。
此时不要急于删除“无用”日志。日志保留周期有限时,先归档异常时段,再按常规策略清理其他时段。归档时要记录采集时间、数据范围、存储位置和校验方式,方便后续确认数据没有被修改。
如果异常流量伴随明显的来源特征,例如同一用户代理、同一路径、同一地域集中出现,可以保存这些特征用于后续规则调整。但不要仅凭单一特征就断定操纵行为。正常用户也可能集中在同一路径,搜索引擎抓取也可能在短时间内增加请求。把特征保存下来,是为了后续交叉验证,而不是直接下结论。
常见误区有三个。第一,先重启服务再看日志。重启会清空内存状态,部分运行时信息可能丢失。第二,只保存平台侧报表,不保存应用侧日志。平台报表通常经过聚合,无法还原单个请求。第三,把请求量下降当作问题解决。请求量下降可能来自限流生效,也可能来自采集中断或业务整体下滑,需要结合业务指标判断。
例外情况也要考虑。如果异常流量已经导致磁盘写满、数据库连接耗尽,继续保留全部日志可能让服务无法恢复。此时可先做最小化保存:保存错误日志、慢查询日志和关键监控数据,再清理非关键日志。最小化保存不是放弃证据,而是明确哪些材料对后续判断最有用。
另一个例外是涉及第三方服务。如果异常流量来自上游代理或CDN,保存其提供的日志和状态记录,同时保存本地应用日志。两者时间戳可能不一致,记录时注明时区和采集方式,避免后续误判。
证据保存完成后,下一步不是直接购买“快速排名”服务,也不是立即大规模改版。先做归因核对:异常流量是否与特定来源、特定接口、特定时间段相关;业务指标下降是否与资源挤占同步;限流或隔离后是否恢复。如果归因指向外部异常请求,下一步是调整防护和容量策略;如果归因指向内部发布或配置变更,下一步是回滚或修复。
如果证据不足以区分原因,先补采数据,而不是先改策略。补采范围包括:更细粒度的日志、更长时间窗口的监控、相关配置的变更记录。补采完成后再决定是否调整规则。这个顺序能避免把资源问题误判为排名问题,也能避免把正常波动误判为操纵行为。
最后,保存证据的动作本身要可复核。记录谁在什么时间做了什么操作,操作前后的数据差异是什么。这样即使后续人员变动,也能从材料中还原判断依据,而不是依赖口头描述。