![](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) 删除