本文目录导读:

服务器带宽跑满是一个常见的运维问题,会导致用户访问缓慢、丢包甚至服务中断,处理思路通常是先止血,再排查,最后治本。
以下是分步骤的处理方案:
第一步:紧急止血(避免服务完全瘫痪)
当带宽被瞬间打满时,不要盲目重启服务器,先做以下操作:
-
临时限速(限流)
-
登录服务器,使用
tc(traffic control,流量控制)命令限制特定端口或IP的带宽。 -
对单IP限速(如限制下载速度为10Mbps):
tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit # 总带宽100M tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 10mbit # 限制单个IP 10M tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.1.100 flowid 1:10
或用更简单的工具如
wondershaper(即时生效,重启失效)。 -
应用层限流: 在 Nginx 中设置
limit_rate或limit_conn,限制单位时间的请求数。
-
-
切断异常流量(封禁IP)
- 使用
iftop或nethogs快速找到占用带宽最高的源IP。 - 临时封禁:
iptables -A INPUT -s 异常IP -j DROP # 丢弃该IP数据包 # 或使用更灵活的ipset: ipset create blacklist hash:ip ipset add blacklist 异常IP iptables -A INPUT -m set --match-set blacklist src -j DROP
- 使用
-
云服务器操作(如果使用云服务商)
- 开启CDN或高防IP: 直接通过云厂商的控制台购买或启用DDoS高防服务,将攻击流量引流清洗。
- 调整安全组: 在云控制台的安全组中,临时只允许自己办公的IP访问关键端口(如SSH、数据库),拒绝其他所有流量。
第二步:快速诊断(定位根因)
止血后,需要查明是谁在消耗带宽(业务流量 vs 攻击流量 vs 误操作)。
-
查看实时流量排行
iftop -i eth0 -P:按1或2键切换排序,按Shift+P显示端口。nethogs eth0:按进程/程序名排序,能看出是nginx、php还是python进程在跑带宽。
-
判断流量类型
- 业务流量(正常峰值): 流量集中在你的业务端口(如 80/443),来源IP分散,且符合用户访问规律(如晚高峰)。
- CC攻击(应用层):大量对同一个URL的请求,User-Agent异常,平均IP请求量极高。
- DDoS攻击(网络层):流量从多个源发向固定端口,通常是UDP洪水或SYN洪水(可使用
tcpdump抓包查看)。 - P2P或挖矿程序: 服务器被入侵植入恶意软件,进程隐藏在系统后台,流量持续且不规律。
-
查看日志
- 检查
nginx/access.log、apache/access_log或云服务商的日志服务,找出请求频率最高的IP和URL路径。 tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
- 检查
第三步:治本策略(长期解决方案)
根据诊断结果,采取不同的解决方案:
| 场景 | 解决方案 |
|---|---|
| 正常业务流量/突发高峰 | 启用CDN/对象存储:静态资源(图片/视频/文件)使用CDN缓存,源站只消耗很小带宽。 升级带宽或使用弹性带宽:和云服务商沟通,开通按量计费的弹性带宽,高峰期自动扩容。 优化程序逻辑:减少大文件直接传输,使用分片上传、压缩(Gzip)和缓存策略。 |
| CC攻击(应用层) | 开启WAF(Web应用防火墙)或云防火墙:配置频率限制、IP黑白名单、人机验证(CAPTCHA)。 Nginx限流模块:限制单IP的请求频率和并发连接数。 CDN防护:使用CDN的CC防护功能,对异常IP封禁。 |
| DDoS攻击(网络层,如SYN/UDP Flood) | 购买高防服务:这是最有效的方案;云厂商会自动清洗流量。 黑洞路由:如果攻击超过阈值,云厂商会自动黑洞掉该IP(通常需联系客服或自动触发)。 避免暴露真实IP:使用CDN、负载均衡或高防源站IP。 |
| 服务器被植入恶意程序(挖矿/后门) | 立刻隔离服务器,停止所有服务。 检查进程: ps auxf,重点观察CPU和内存占用异常的进程,通常名称随机。检查网络连接: netstat -antp,看到大量向外连接到不明IP的异常连接。扫描病毒:使用 ClamAV 或 chkrootkit 检查。重装系统:如果确认被入侵,最稳妥的方式是备份数据后重装系统,并修改所有密码(SSH、数据库、服务密码)。 |
一个清晰的行动清单(快速操作版)
- 第一反应: 登录服务器,运行
iftop看谁在吃带宽。 - 紧急操作(根据结果):
- 如果是攻击:
iptables -A INPUT -s 攻击IP -j DROP或上云防火墙封堵IP段。 - 如果是正常突发:立即开启CDN,或联系云服务商临时提升带宽。
- 如果是攻击:
- 查日志:
tail -100 /var/log/nginx/access.log | awk '{print $1}'结合sort找出高频IP。 - 检查进程:
top或htop,看是否有不认识的进程在狂跑。 - 长期预防:
- 给服务器安装安全防护(如云厂商的云安全中心)。
- 配置防火墙(仅开放业务所需端口)。
- 为重要服务绑定高防IP。
最后提醒: 如果服务器已经无法远程登录(带宽耗尽导致SSH超时),可以尝试通过云服务商的控制面板的VNC(虚拟网络计算)控制台 或救援模式 进入,或者直接强制重启,如果重启后仍是满带宽,则大概率是系统已中毒或被持续攻击,建议直接重装系统并恢复数据。
标签: 故障排查
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播