运维知识
悠悠
2025年10月14日

网络慢如蜗牛?教你几招Linux测带宽的绝活,让网络问题无处遁形!

昨天又有客户问我,说他们的应用突然变慢了,怀疑是网络问题。我问他网络带宽多少,他说不知道...这种情况我见得太多了,很多人遇到网络问题就是一脸懵,完全不知道从哪里下手。

其实测网络带宽这个事情,我刚开始做运维的时候也是摸着石头过河。记得有一次领导问我们机房的带宽利用率怎么样,我愣是说不出个所以然来,那个尴尬啊...从那以后我就下定决心要把这些基本功练扎实。

今天就来分享一下我这些年积累的Linux网络带宽测试经验,保证让你以后遇到网络问题不再抓瞎。

speedtest-cli - 最简单粗暴的方法

说到测带宽,我第一个想到的就是speedtest-cli。这玩意儿就像网页版的speedtest.net,但是可以在命令行里跑,特别适合我们这些服务器党。

安装很简单:

# CentOS/RHEL系列
yum install epel-release
yum install python-pip
pip install speedtest-cli

# Ubuntu/Debian系列
apt update
# 安装 pipx
sudo apt install pipx
pipx ensurepath

# 安装应用
pipx install speedtest-cli

#添加环境变量
echo 'export PATH="$PATH:/root/.local/bin"' >> ~/.bashrc
source ~/.bashrc

image-20251014220320277

装好之后直接运行:

speedtest-cli

它会自动帮你选择最近的测试服务器,然后开始测试。输出大概是这样的:

image-20251014220631686

不过有时候自动选择的服务器不太理想,你可以手动指定。先看看附近有哪些服务器:

speedtest-cli --list | grep China

然后选一个延迟比较低的:

speedtest-cli --server 服务器ID

我记得有一次我们的业务突然变慢,用户投诉不断。我用speedtest-cli一测,发现下载速度只有平时的一半,赶紧联系运营商,原来是他们在做线路维护忘记通知我们了。

iperf3 - 专业级的带宽测试工具

speedtest-cli虽然方便,但有个问题就是测试的是到公网的速度。如果你想测试内网带宽,或者两台服务器之间的带宽,那就得用iperf3了。

安装iperf3:

# CentOS/RHEL
yum install iperf3

# Ubuntu/Debian
apt install iperf3

iperf3需要一台服务器做服务端,一台做客户端。在服务端运行:

iperf3 -s

image-20251014220858122

在客户端运行:

iperf3 -c 服务端IP

默认测试10秒钟,你也可以指定时间:

iperf3 -c 服务端IP -t 30

测试UDP带宽:

iperf3 -c 服务端IP -u

客户端结果:

image-20251014221400196

服务端结果:

image-20251014221423484

我特别喜欢用iperf3测试新部署的服务器之间的网络性能。有一次我们要在两个机房之间做数据同步,用iperf3测了一下专线带宽,发现实际速度比运营商承诺的要低不少,最后让他们重新调试了线路。

wget/curl - 简单实用的下载测试

有时候你就想快速测一下下载速度,不想装额外的工具,那wget和curl就够用了。

用wget测试:

wget -O /dev/null http://speedtest.tele2.net/100MB.zip

这个命令会下载一个100MB的文件到/dev/null(相当于丢弃),然后显示下载速度。

用curl测试:

curl -o /dev/null http://speedtest.tele2.net/100MB.zip

如果你想看更详细的信息:

curl -o /dev/null -w "下载速度: %{speed_download} bytes/sec\n总时间: %{time_total}s\n" http://speedtest.tele2.net/100MB.zip

这种方法的好处是可以测试到特定服务器的速度,比如你的CDN节点或者合作伙伴的服务器。

nload - 实时监控网络流量

有时候你不是要测最大带宽,而是想看看当前的网络使用情况,nload就很合适。

安装nload:

# CentOS/RHEL
yum install nload

# Ubuntu/Debian
apt install nload

运行很简单:

nload

image-20251014223241747

它会显示一个实时的图表,显示当前的上传和下载速度。如果你有多个网卡,可以用左右箭头键切换。

我经常用nload来监控服务器的网络使用情况,特别是在做数据迁移或者大文件传输的时候,可以实时看到网络利用率。

iftop - 看看谁在占用带宽

iftop比nload更进一步,它不仅能显示总的流量,还能显示每个连接的流量情况。

安装iftop:

# CentOS/RHEL
yum install iftop

# Ubuntu/Debian
apt install iftop

运行需要root权限:

sudo iftop

iftop的界面有点像top命令,显示当前所有网络连接的流量情况。你可以看到每个IP地址的上传下载速度,这对于排查网络问题特别有用。

image-20251014223316164

有一次我们的服务器网络突然变慢,用iftop一看,发现有个IP在疯狂下载数据,原来是有人在爬我们的网站...

nethogs - 进程级别的网络监控

如果你想知道是哪个进程在占用网络带宽,nethogs就派上用场了。

安装nethogs:

# CentOS/RHEL
yum install nethogs

# Ubuntu/Debian
apt install nethogs

运行:

sudo nethogs

image-20251014223425928

nethogs会显示每个进程的网络使用情况,包括进程名、PID、用户等信息。这对于排查哪个应用程序占用带宽特别有用。

一些实用的测试技巧

选择合适的测试时间

网络带宽测试最好在不同时间段多测几次,因为网络状况会随时间变化。我一般会在早上、中午、晚上各测一次,这样能得到比较全面的数据。

注意测试方向

很多人只测下载速度,忽略了上传速度。但对于服务器来说,上传速度同样重要,特别是如果你的服务器需要向用户推送大量数据的话。

考虑并发连接

单线程测试得到的带宽可能不能反映真实情况。可以试试多线程测试:

iperf3 -c 服务端IP -P 4

这个命令会启动4个并行连接进行测试。

记录测试结果

我建议把测试结果记录下来,建立一个基线。这样以后出现问题的时候,你就能快速判断是不是网络带宽的问题了。

遇到问题怎么办

如果测试结果不理想,不要慌。我的经验是按这个顺序排查:

  1. 先确认是不是测试方法的问题,换个工具再测一次
  2. 检查服务器的网卡配置,看看是不是限速了
  3. 联系网络管理员或者运营商,确认线路状况
  4. 检查防火墙和安全组设置,看看是不是有限制

有一次我们的测试结果特别差,折腾了半天才发现是网卡驱动的问题,更新驱动之后速度立马就上来了。

写在最后

网络带宽测试看起来简单,但要做好还是需要一些经验的。我建议大家平时多练习,熟悉这些工具的使用方法。更重要的是,要建立定期测试的习惯,这样才能及时发现问题。

说实话,网络问题往往是最难排查的,因为涉及的环节太多了。但只要你掌握了这些基本的测试方法,至少能快速定位问题的大概范围,这就已经成功了一半。

记住,做运维最重要的就是要有数据支撑,不能凭感觉。网络慢不慢,不是你说了算,是测试结果说了算!

如果这篇文章对你有帮助,别忘了点赞转发支持一下!想了解更多运维实战经验和技术干货,记得关注微信公众号@运维躬行录,领取学习大礼包!!!我会持续分享更多接地气的运维知识和踩坑经验。让我们一起在运维这条路上互相学习,共同进步!

公众号:运维躬行录

个人博客:躬行笔记

文章目录

博主介绍

热爱技术的云计算运维工程师,Python全栈工程师,分享开发经验与生活感悟。
欢迎关注我的微信公众号@运维躬行录,领取海量学习资料

微信二维码