首页 guides Hostease 专区实测讨论:服务器带宽跑满排查:iftop 与 nload 定位异常流量来源需要验证哪些指标

Hostease 专区实测讨论:服务器带宽跑满排查:iftop 与 nload 定位异常流量来源需要验证哪些指标

上周群里一位站长的机器突然卡死,SSH 敲一个命令要等十几秒,网站全国访问超时。他第一反应是”被打了,赶紧升配”,结果登上控制台一看:带宽(网络传输容量)的出站方向跑成一条直线,CPU 负载却只有 0.6。这篇帖子就教你如何用 nload 和 iftop 这对轻量组合,在十几分钟内把”流量到底去哪了”定位到具体连接和具体进程,区分正常业务增长与异常流量,再决定是处置、限速还是扩容,避免一慌就直接掏钱升级。

一、先分清方向:出站跑满和入站跑满是两回事

排查的第一步不是急着装工具,而是看主机商后台的带宽图。曲线分入站(外部流向服务器的流量)和出站(服务器流向外部的流量)两条,绝大多数”跑满”都出在出站方向,而两类问题的处理思路完全不同。出站跑满,多与内容被大量下载、图片被盗链、爬虫抓取大文件有关,是本篇的重点场景;入站跑满,则多与流量型攻击有关,单机能做的有限,需要在防火墙或上游做过滤,思路完全另一条线。

另一个常见误区是把带宽跑满和 CPU 跑满混为一谈。在终端里执行 uptime,如果 load average 只有 0.5 而网站依然卡死,瓶颈基本可以锁定在网络而不是计算资源;反过来,如果 CPU 长期跑满,带宽图可能只是被拖累的次要症状。先花一分钟分清方向和瓶颈类型,后面的排查才不会走弯路。另外建议先弄清楚自己买的是共享端口还是独享端口,两种模式的实测差异可以参考之前的带宽选择攻略,看懂计费口径再谈排查。

二、用 nload 确认总量:现在到底跑了多少

nload 的价值在于”快”:一条命令就能看到每块网卡的实时出入站速率和累计流量,零配置。它回答的问题是”流量有多大、方向在哪边”,但不会告诉你流量属于哪个连接——这一步留给后面的 iftop。安装就两行命令:Debian/Ubuntu 用 apt install nload -y,CentOS/AlmaLinux 用 yum install nload -y。直接运行 nload 进入实时界面,左右方向键切换网卡,q 退出;界面上半部分是入站曲线、下半部分是出站曲线,右侧给出当前速率(Curr)、平均值(Avg)、最小值(Min)和最大值(Max)。

在我的测试环境里,一台标称 100Mbps 的 VPS(虚拟专用服务器)跑正常建站业务时,出站 Curr 通常在 30Mbps 上下浮动;如果长期贴着 95Mbps 以上,就是实打实的跑满,先记录峰值和持续时间。曲线形态比单点数值更有信息量:白天高峰缓升属于正常业务,凌晨三点依然满速、曲线平成一条直线的,大概率是下载、镜像或异常程序。判断”持续性跑满”还是”瞬时突发”,可以用 nload -t 5000 -a 360000 把刷新间隔设为 5 秒、平均值窗口拉到 1 小时再观察。实操建议把 nload 挂在一个 SSH 窗口,另一个窗口做后续操作,随时确认处置动作是否生效。

网络监控界面上入站与出站两条流量曲线,一条平稳起伏,一条贴近上限运行

三、用 iftop 定位来源:流量到底去哪了

nload 告诉你”跑满了”,iftop 则回答”谁干的”。它把当前所有网络连接按实时速率排序,默认最上面就是流量最大的连接。安装同样是 apt install iftop -y 或 yum install iftop -y,运行时建议带上参数 iftop -nNP -i eth0:-n 禁止域名反解析,避免排查时反向 DNS(域名系统)查询把本就卡顿的 SSH 拖得更死;-N 直接显示端口号,-P 显示端口对应的服务;-i eth0 指定网卡,多网卡环境必须指定,否则看到的是聚合数据。进入界面后按 S、D 可以切换源端口和目标端口的显示与排序。

判读时盯住两个位置。第一是最上方的连接列表:=> 表示发送方向,<= 表示接收方向,条形图最长、速率数字最大的就是当前吃带宽的主角;第二是底部的 Tx 峰值行:如果发送速率远大于接收速率,说明是服务器在主动往外发数据,重点查 Web 下载、盗链、备份上传或异常程序。看到可疑 IP 后,先用 ss -tunap | grep 加上该 IP 找到对应进程,再用 iftop -nNP -F 加上可疑IP/32 单独观察它的持续流量,确认是持续占用还是瞬时突发。从”网站卡顿”到”定位到具体 IP 和端口”,熟练之后整个流程不超过十分钟。

终端流量分析界面按速率排序列出所有连接,运维锁定最上方占比最大的连接

四、三类典型结果与对应处置

iftop 的排序结果千差万别,但归纳起来无非三类。先对号入座再动手,能避免”一看到流量大就封 IP”的误伤:

  • 本机 80/443 端口出站大、对端 IP 分散,属于正常业务高峰(活动、爆款内容),建议临时扩容或升级带宽,同时做页面静态化
  • 同一外部 IP 或同网段长期高速下载,多半是站点被镜像、爬虫抓大文件,用防火墙封禁配合 Nginx 限速
  • 可疑进程占用、流量走与 Web 无关的端口,疑似服务器被入侵当跳板,立即隔离进程、改密、排查计划任务

前两类都可以用 Nginx 限速直接缓解。以对单个 IP 限制下载速度为例,在站点配置中加入:limit_req_zone $binary_remote_addr zone=dl:10m rate=5r/s; 再在 location /downloads/ 里配置 limit_req zone=dl burst=10 nodelay、limit_rate_after 1m(每连接前 1MB 不限速)、limit_rate 256k(之后限到 256KB/s)。这套配置的含义是:先允许用户和爬虫快速拿到第一兆字节保证页面体验,超过 1MB 后降速,单 IP 请求频率也限制在每秒 5 次。对图片站和资源站来说,仅这一条通常就能把失控的出站流量压回安全水位,图片体积本身过大的,还应该在源头压缩,可以参考之前的跨境线路实测帖里的排查思路。

而”正常业务增长”和”异常流量”的区别,看曲线形态最直观:健康流量随访问时段起伏、有峰有谷;异常流量与访问时段无关,长期贴着带宽上限走成一条直线。如果你的带宽曲线更像后者,就值得按上一节的方法继续深挖具体连接了。

健康流量曲线随时段起伏有峰谷,异常流量曲线长期贴着上限走成直线

五、把一次性排查变成常规能力

总结一下整个流程:nload 负责”确认总量与方向”,iftop 负责”定位到连接与进程”,再按三类场景选择扩容、限速或安全处置。这套方法的价值不止于救急,建议固化成两个常规动作。第一步是加监控:用 vnstat 或云监控记录每日带宽基线,例如”工作日峰值 40Mbps、夜间 5Mbps”,下次异常时一眼识别偏离。第二步是做准备:提前在 Nginx 配置里保留限速模板和防盗链规则,异常发生时改两个数字即可生效,不用临场翻文档。习惯了这套流程之后,带宽告警再弹出来,你看到的就是一组可验证的指标,而不是一团让人心慌的乱麻。

回到开头那位站长:最后用 iftop 一查,是一个图片目录被某镜像站整站拖走了,一条 limit_rate 加防火墙封禁十分钟收工,机器没升级,费用一分没加。如果你需要更高且可预测的流量上限,可以考虑 Hostease 的独立服务器方案,按业务量选择端口与带宽规格;日常建站遇到页面加载慢,推荐配合VPS 速度优化指南一起排查。带宽跑满从来不是”重启解决”的问题,掌握 nload 与 iftop 这对组合,你就能在故障发生的十几分钟内给出准确的判断和处置。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://hostease.webhostingtalk.cn/guides/hostease-server-bandwidth-iftop-nload/

作者: wht-he-admin

下一篇
服务器带宽跑满时出站流量激增,运维在告警状态下定位流量来源

已经没有了

返回顶部