Files
StudyDiary/02-学习笔记/网络测速/网络慢如蜗牛?教你几招Linux测带宽的绝活,让网络问题无处遁形!-腾讯云开发者社区-腾讯云 1.md
2026-07-23 20:36:13 +08:00

256 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![](https://developer.qcloudimg.com/http-save/yehe-3597170/25f2db33ae7d74d82830e2ed18d7ce3c.jpg)
机房内的蓝光
昨天又有客户问我,说他们的应用突然变慢了,怀疑是网络问题。我问他网络带宽多少,他说不知道...这种情况我见得太多了,很多人遇到网络问题就是一脸懵,完全不知道从哪里下手。
其实测网络带宽这个事情,我刚开始做运维的时候也是摸着石头过河。记得有一次领导问我们机房的带宽利用率怎么样,我愣是说不出个所以然来,那个尴尬啊...从那以后我就下定决心要把这些基本功练扎实。
今天就来分享一下我这些年积累的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
```
![](https://developer.qcloudimg.com/http-save/yehe-3597170/2b5d27d882604488a55831217dd80794.png)
image-20251014220320277
image-20251014220320277
装好之后直接运行:
它会自动帮你选择最近的[测试服务](https://cloud.tencent.com/product/wetest?from_column=20065&from=20065)器,然后开始测试。输出大概是这样的:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/bcc9c060c33af94c57e5fb4742d50761.png)
image-20251014220631686
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需要一台服务器做服务端,一台做客户端。在服务端运行:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/4dc81cf4ad8fc7db2df5d927fb0c97c4.png)
image-20251014220858122
image-20251014220858122
在客户端运行:
默认测试10秒钟,你也可以指定时间:
测试UDP带宽:
客户端结果:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/0c260bc2041a86bb41e912a80d7f6aa2.png)
image-20251014221400196
image-20251014221400196
服务端结果:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/5df4dc64e3ee680ec8363cc0bdd1d094.png)
image-20251014221423484
image-20251014221423484
我特别喜欢用iperf3测试新部署的服务器之间的网络性能。有一次我们要在两个机房之间做[数据同步](https://cloud.tencent.com/product/datainlong?from_column=20065&from=20065),用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
```
运行很简单:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/abc21faf0f58be050bacb5ed876c0b79.png)
image-20251014223241747
image-20251014223241747
它会显示一个实时的图表,显示当前的上传和下载速度。如果你有多个网卡,可以用左右箭头键切换。
我经常用nload来监控服务器的网络使用情况,特别是在做[数据迁移](https://cloud.tencent.com.cn/product/datainlong?from_column=20065&from=20065)或者大文件传输的时候,可以实时看到网络利用率。
### **iftop - 看看谁在占用带宽**
iftop比nload更进一步,它不仅能显示总的流量,还能显示每个连接的流量情况。
安装iftop
```
# CentOS/RHEL
yum install iftop
# Ubuntu/Debian
apt install iftop
```
运行需要root权限:
iftop的界面有点像top命令,显示当前所有网络连接的流量情况。你可以看到每个IP地址的上传下载速度,这对于排查网络问题特别有用。
![](https://developer.qcloudimg.com/http-save/yehe-3597170/c4ff6771964687b77a9403d47cc2303b.png)
image-20251014223316164
image-20251014223316164
有一次我们的服务器网络突然变慢,用iftop一看,发现有个IP在疯狂下载数据,原来是有人在爬我们的网站...
### **nethogs - 进程级别的网络监控**
如果你想知道是哪个进程在占用网络带宽,nethogs就派上用场了。
安装nethogs
```
# CentOS/RHEL
yum install nethogs
# Ubuntu/Debian
apt install nethogs
```
运行:
![](https://developer.qcloudimg.com/http-save/yehe-3597170/34178da062510889bde7d3bdd7010668.png)
image-20251014223425928
image-20251014223425928
nethogs会显示每个进程的网络使用情况,包括进程名、PID、用户等信息。这对于排查哪个应用程序占用带宽特别有用。
### **一些实用的测试技巧**
**选择合适的测试时间**
网络带宽测试最好在不同时间段多测几次,因为网络状况会随时间变化。我一般会在早上、中午、晚上各测一次,这样能得到比较全面的数据。
**注意测试方向**
很多人只测下载速度,忽略了上传速度。但对于服务器来说,上传速度同样重要,特别是如果你的服务器需要向用户推送大量数据的话。
**考虑并发连接**
单线程测试得到的带宽可能不能反映真实情况。可以试试多线程测试:
这个命令会启动4个并行连接进行测试。
**记录测试结果**
我建议把测试结果记录下来,建立一个基线。这样以后出现问题的时候,你就能快速判断是不是网络带宽的问题了。
### **遇到问题怎么办**
如果测试结果不理想,不要慌。我的经验是按这个顺序排查:
1. 1\. 先确认是不是测试方法的问题,换个工具再测一次
2. 2\. 检查服务器的网卡配置,看看是不是限速了
3. 3\. 联系网络管理员或者运营商,确认线路状况
4. 4\. 检查防火墙和安全组设置,看看是不是有限制
有一次我们的测试结果特别差,折腾了半天才发现是网卡驱动的问题,更新驱动之后速度立马就上来了。
### **写在最后**
网络带宽测试看起来简单,但要做好还是需要一些经验的。我建议大家平时多练习,熟悉这些工具的使用方法。更重要的是,要建立定期测试的习惯,这样才能及时发现问题。
说实话,网络问题往往是最难排查的,因为涉及的环节太多了。但只要你掌握了这些基本的测试方法,至少能快速定位问题的大概范围,这就已经成功了一半。
记住,做运维最重要的就是要有数据支撑,不能凭感觉。网络慢不慢,不是你说了算,是测试结果说了算!
本文参与 [腾讯云自媒体同步曝光计划](https://cloud.tencent.com.cn/developer/support-plan),分享自微信公众号。
原始发表:2025-10-14,如有侵权请联系 [cloudcommunity@tencent.com](mailto:cloudcommunity@tencent.com) 删除