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

256 lines
8.5 KiB
Markdown
Raw Normal View History

2026-10-09 22:06:40 +08:00
![](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) 删除