先给结论:不要急着封 IP 或重启服务,第一步是把“异常流量挤占资源”这个现象固定成可复核的证据链。具体做法是同时保存三层记录——入口访问日志、服务资源指标、以及你随后采取动作的时间戳。只有这三层能互相对上,证据才站得住;否则很容易把一次正常的促销高峰误判为攻击,或者反过来把攻击当成代码故障。
假设你运营一个已有实际订单的小型电商站,某天上午客服反馈页面加载变慢,同时后台订单提交开始超时。你登录服务器看到 CPU 与连接数都接近上限。此时有两种可能:一是真实流量上涨(比如你刚投了广告),二是异常流量在挤占正常服务资源。这两者的处理方向完全相反,所以先别动手,先取证。
按下面顺序做,每一步都会影响下一步的判断:
做完这三步,你才有资格判断:如果异常请求集中在少数路径且频率远超正常用户,更可能是挤占型异常流量;如果请求分散、路径与真实用户一致,更可能是真实高峰,该做的是扩容而不是拦截。
保存证据不是把文件堆在一起,而是让记录能回答三个具体问题。缺任何一个,后续复盘都会卡住。
有几个常见误区,会让你的记录看起来完整却无法支撑判断。
只截图不存原始日志。截图无法检索、无法统计频率,事后想核对来源分布时只能重来。原始日志才是可复核的底稿。
把“请求量归零”当成处置成功的证明。请求量下降可能有多种解释:异常确实停了、你的限流误伤了真实用户、或者上游网络本身出了问题。归零只是现象,不是结论,必须结合正常业务指标(如订单成功率)一起看。
只记录异常,不记录正常基线。没有平时的访问与资源基线,你无法说明“现在这个量算异常”。基线最好提前留存,而不是出事当天才开始记。
把相关性当因果。“我加了限流,流量就降了”不等于限流导致了下降。要证明这一点,需要处置前后各一段可比的时间窗口。
取证要合法、可交接,否则证据再全也用不上。
现在就做一件事:在监控系统里为“正常业务指标”和“资源指标”各建一条基线视图,并确认日志的原始导出通道可用。这个动作的结果会直接决定下一步——如果基线齐全、导出通道通畅,异常发生时你只需按上面的顺序抓取即可;如果发现日志只能看不能导,那你首先要解决的是取证能力,而不是拦截策略。
需要提醒的是,任何以操纵手段获取排名的做法都不在本文讨论范围,本文只处理“已有业务遭遇资源挤占时如何保留证据”这一具体问题。证据保存的意义在于让你在真实高峰和异常流量之间做出正确取舍,而不是替代正常的容量规划与安全防护。