L=/var/log/nginx/access.log
awk '{print $1}' $L > /tmp/ips.txt
cut -d. -f1-3 /tmp/ips.txt | sort | uniq -c | sort -rn
awk '{print $12}' $L | sort | uniq -c | sort -rn | head -3
带宽监控半夜冲到跑满,访问日志一小时涨了六倍,页面还能开但慢得厉害,请求看着不像真人点的。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,所有请求都集中在同一段地址的几十个 IP 上,UA 一模一样,专挑搜索接口打,接口既没限速也没有分页上限,并发一下就吃满了。
围绕「流量突增来源」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:先按 IP 段聚合统计,看请求是不是集中在很小的一段里;再看 UA 和请求路径是否一致,确认是同一批脚本在跑;确认后只对这一段加限速,别直接封整段误伤正常用户。
改完只确认一件事:该段请求被限速后带宽回落,正常用户的响应时间也跟着恢复正常水平。
