监控告警出网带宽持续打满,网站打开很慢但 CPU 和磁盘都正常,不知道流量到底是谁发出去的。
原因不止一个,得分开看。备份或者同步任务在业务时段跑了。也可能是站点被大量抓取或者遭遇异常请求。
还有一种情况,程序异常重试,短时间内产生大量请求。
先按连接看实时流量
iftop -nNP -i eth0
再往下按进程看流量归属
nethogs eth0
接着统计异常来源地址
ss -tn state established | awk '{print $5}' | sort | uniq -c | sort -rn | head
等前面都确认过,再确认是否有限速策略
tc qdisc show dev eth0
同事提醒我看一下最近一次发布,时间点确实对得上。
命令输出我都留了记录,免得改完记不清原来的值。
恢复的判定其实很直接。找到流量来源后限流或者推迟任务,带宽回落到告警阈值以下,站点响应恢复。
容易忽略的是,只限速不查来源会把问题变成长期状态;先确认是业务正常增长还是异常请求,处理方式完全不同。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。