网站流量异常波动排查分析:从零开始的完整操作指南
什么时候需要排查流量异常波动
网站流量突然暴增或暴跌,通常不是好兆头。
如果你发现服务器负载飙升、带宽跑满,或者原本稳定的用户访问量突然下降,就需要立即进行网站流量异常波动排查分析。
常见原因包括:被恶意刷流量(CC攻击)、搜索引擎爬虫异常、某个推广活动突然生效、或者服务器配置错误导致流量被拦截。
准备工作:你需要什么环境和权限
在开始排查前,确认你有以下条件:
- 服务器SSH登录权限(能直接执行命令,或使用宝塔面板的终端功能)
- Web服务访问日志(Nginx或Apache默认开启,一般位于
/var/log/nginx/access.log或/var/log/httpd/access_log) - 基础的Linux命令执行能力(本文会给出完整命令,复制粘贴即可)
- 一个简单的流量统计工具(如
iftop或vnstat,用于实时查看带宽)
如果你是宝塔面板用户,可以在“面板设置→文件管理”中直接查看日志文件,无需敲命令。
核心步骤:五步定位流量异常根源
第一步:确认流量波动类型
先用 htop 或 top 查看系统负载,再看带宽占用:
# 安装iftop(CentOS/Ubuntu通用)
yum install -y iftop # CentOS
apt install -y iftop # Ubuntu
# 实时查看带宽,按端口或IP排序
iftop -i eth0 -n -P
如果看到某个陌生IP持续占用大量带宽,大概率是恶意流量。
如果流量正常但服务器负载高,可能是程序问题。
第二步:分析Web访问日志高频IP
# 统计过去一分钟内的请求IP频率(以Nginx为例,日志格式默认以空格分隔,第1列为IP)
tail -n 1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
正常情况下,同一个IP的请求量不会太夸张。
如果某个IP在短时间内请求几千次,基本可以判定为攻击源。
第三步:检查请求路径和状态码
查看这些高频IP访问的具体路径:
# 筛选出同一IP的请求记录,取前20条
grep '192.168.1.100' /var/log/nginx/access.log | awk '{print $7, $9}' | head -20
如果大量请求指向某个动态页面(如 /?)或者返回404、500等状态码,说明可能是扫描或攻击。
id=1
第四步:查看实时连接数和并发
# 统计当前ESTABLISHED连接按IP分布
ss -ant | grep ESTAB | awk '{print $4}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn | head -10
正常连接数一般个位数或几十,如果某个IP有上百个ESTABLISHED连接,几乎可以确定是CC攻击。
第五步:利用日志快速封禁异常IP
找到恶意IP后,使用防火墙(firewalld或iptables)立即封禁:
# 临时封禁(立即生效)
iptables -A INPUT -s 192.168.1.100 -j DROP
# 永久封禁(建议记录并加入黑名单)
echo 'deny 192.168.1.100;' >> /etc/nginx/block_ip.conf
nginx -s reload
注意:不要误封搜索引擎的IP(如百度、Google),可以先通过 host 命令反向解析IP判断是否为搜索引擎。
避坑指南:新手最容易犯的几个错
- 误把正常CDN节点IP当攻击源:如果你的网站使用了CDN(如Cloudflare、阿里云CDN),访问日志中看到的IP是CDN节点IP,而非真实用户IP。你需要把CDN透传的真实IP字段(如
X-Forwarded-For)加入日志格式。 - 忘记检查定时任务或推广活动:流量波动可能是你自己忘记关掉的某个营销活动导致。建议先联系运营确认。
- 怀疑攻击前先排查服务器配置:如防火墙规则误删、Nginx限流配置错误等,都可能造成流量异常。
- 封禁后没有持续观察:封禁一个IP后,攻击者可能换IP重来。建议结合
fail2ban自动封禁高频请求IP。
验证方法:如何确认流量恢复正常
封禁异常IP并调整配置后,等待5-10分钟,按以下方式验证:
# 查看当前带宽占用是否下降
iptop -n -P | head -10
# 检查Web日志请求速率是否稳定
tail -f /var/log/nginx/access.log | awk '{print $1}' | uniq -c
同时观察服务器负载(top)和业务监控(如果使用第三方工具)。
如果峰值下降至正常范围,并且没有新的异常IP出现,说明本次排查成功。
如果你在处理网站流量异常波动排查分析时遇到其他问题,建议先按本文步骤完整走一遍,再根据自身环境微调;
遇到误封或反复攻击时,优先查看避坑指南和高频问题部分。