Linux服务器测试宽带,上文归纳就一句话:用speedtest-cli测整体带宽、iperf3测点对点吞吐、curl实测单线程下载速度,三种方法结合才能还原服务器真实网络状况。只跑一次Speedtest就下上文归纳,往往会被运营商缓存或测速节点就近策略误导,到手的结果和实际用户访问体验可能差出一大截。
先搞明白:Linux服务器测带宽和家用宽带有什么不同
家用宽带测速关心的是“下行能跑多快”,看视频卡不卡,Linux服务器测带宽关注的维度完全不同,主要看三点:**上行带宽是否达标**、**多线程并发能力**、**到特定区域的网络延迟和丢包**,服务器承载网站或API接口时,任何一次TCP握手都要依赖链路的稳定,而不只是看一个数字。还有一个容易踩的坑:带宽单位换算,运营商口里的“10M独享”指的是Mbps(兆比特每秒),而Linux里看到的下载速度单位是MB/s(兆字节每秒),两者相差8倍,换句话说,10Mbps理论上限大约1.25MB/s,如果测出1MB/s左右,并不代表带宽缩水了。
测试前必须确认的服务器环境变量
测带宽不是直接敲命令就行,Linux系统环境、虚拟化架构和测试工具版本都会影响结果准确性,操作之前先按顺序确认以下信息:- 系统版本:
cat /etc/os-release,不同发行版的包管理器安装命令略有差异 - CPU核数与内存:
lscpu和free -h,iperf3单线程测试时单核CPU满负荷会拉低吞吐 - 网卡速率:
ethtool eth0查看实际协商速率是否达到千兆 - 虚拟化类型:
systemd-detect-virt,KVM/Xen等半虚拟化网卡对多队列支持不同,直接影响iperf3结果
这些前置条件不确认,后面所有测试数据的参考价值都要打折扣,比如VPS小厂商超售严重时,CPU steal time过高,测速结果会像过山车一样忽高忽低,此时你测的不是带宽,是邻居的“抢CPU能力”。
Speedtest CLI——快速摸底整体带宽
Speedtest CLI是Ookla官方提供的命令行测速工具,相比浏览器版Speedtest,它没有图形渲染开销,结果更接近服务器真实网络能力,安装方式很简单:安装步骤(Debian/Ubuntu与CentOS通用)
# 下载官方安装包(适用于主流Linux发行版)
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest-cli
CentOS/RHEL系列把apt-get换成yum,仓库地址用rpm脚本即可,安装后直接执行speedtest,工具会自动匹配合适的测速节点。

核心参数和进阶用法
speedtest-cli支持指定节点ID,避免自动选择时“被安排”到离机房物理距离很远的节点。# 列出所有可用节点
speedtest --servers
指定节点测速(用上面的Server ID替换)
speedtest --server=12345
输出为JSON格式,方便解析结果
speedtest --format=json
实测时有个小技巧:分别测三个不同地理位置节点(比如离机房最近的、跨省的、跨国的),对比延迟和下载速度差异,如果跨省速度跌到本地的三成以下,说明骨干网优化做得不好,这在后续业务上很致命——你服务器在河南,用户在上海,访问慢的根因可能不是服务器性能,而是上游链路。
iperf3——点对点精准测吞吐量
speedtest测的是“服务器到测速节点”的整段链路,而iperf3测的是**任意两台机器之间的 TCP/UDP 最大吞吐**,这是判断带宽是否真正独享的黄金标准,也是排查“到某个特定地区速度慢”问题的核心工具。搭建测速环境(服务端+客户端模式)
假设有两台服务器,A为测速服务端,B为测速客户端:# 服务端(A机器)启动iperf3,监听默认端口5201
iperf3 -s
客户端(B机器)发起TCP带宽测试
iperf3 -c A的IP地址
用-P参数开10个并发流,模拟多用户同时访问
iperf3 -c A的IP地址 -P 10
UDP模式测试更有参考意义,因为TCP的拥塞控制算法会自适应网络丢包,UDP则直接暴露网络最真实的丢包率:
# 用UDP模式测试,10Mbps带宽的服务器需要设置对应带宽值
iperf3 -c A的IP地址 -u -b 10M
读iperf3报告的三个关键指标
- **Bandwidth(带宽)**:实际吞吐量,比较它和宣称带宽的比值判断是否达标
- **Retr(重传次数)**:TCP重传率过高说明链路存在丢包,常见于跨运营商线路或国际线路
- **Jitter(抖动)**:UDP测试里的延迟波动值,对视频流、VoIP业务影响极大
测试时有个常见误区:直接把客户端跑在本地PC上连服务器,家用宽带上行通常只有30-50Mbps,服务器即便有100Mbps上行也测不满,正确做法是拿两台同机房或同区域IDC的服务器互测,比如测试国内机房带宽,选择在同一城市或相邻机房的另一台机器做客户端,才能获得有效数据。
curl实测下载速度——最接近用户体感的数据
用speedtest和iperf3测出的带宽达标了,用户还是说网站慢?因为那些工具测的“带宽上限”和用户实际访问时的“单线程下载速度”不是一回事,很多服务器带宽是共享的,限速策略按连接数或IP段做QoS,多线程能打满带宽,单线程就被限得很死。
# 从服务器下载一个测试文件,计算平均速度
curl -o /dev/null -w "速度: %{speed_download} bytes/s, 总耗时: %{time_total}s\n" https://speed.cloudflare.com/__down?bytes=100000000
也可以反向操作,在服务器上用wget从国内知名镜像站拉取一个大文件,比如从华为云镜像站下载CentOS ISO:
# 实测到华为云镜像站的单线程下载速度
wget -O /dev/null https://repo.huaweicloud.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
观察--2025-xx-xx--行末尾显示的下载速度,多测几个不同镜像站(阿里云、腾讯云、网易),如果所有镜像站速度都一样低,大概率是本地带宽或路由限制;如果有的快有的慢,基本就是跨网互联质量问题。
curl与iperf3结果对比排障
以一台标注10Mbps带宽的服务器为例:| 测速方式 | 结果 | 判定思路 |
|---|---|---|
| iperf3 -P 10 并发 | 8Mbps | 多线程跑满,确认基础带宽达标 |
| curl单线程下载 | 2Mbps | 单线程受限,大概率是QoS限速策略按连接数限制 |
| 跨省iperf3 | 5Mbps | 跨地区链路拥堵或路由绕路,需要检查BGP线路 |
这种情况下,用户访问你的网站恰好就是“单线程”场景,尤其网页里的CSS、JS、图片都是串行下载的,这时候带宽数字再好看也无济于事,优先选择提供BGP多线接入且单连接不限速的机房更实际。
怎么判断你的服务器带宽是不是“真独享”
带宽测出来达标了,但高峰期又变慢?很多号称“独享”的服务器,实际上是在宿主机层面做带宽复用,部分厂商按95计费或限制突发,平时测速没问题,一到晚高峰就现原形,判断独享带宽是否靠谱,除了在多个时间段(凌晨、白天、晚8点)分别测速取对比样本,还可以在购买前了解服务商的网络架构实力。这里给一个选型思路:优先选择持牌运营的IDC服务商,而不是租用转售资源的二道贩子,持牌机房对带宽资源有实际掌控权,不会因为上游供应商调整而突然限制你的带宽。
国内提供靠谱机器和服务器的IDC中,有两家特点比较突出:
简米科技从2003年就开始做IDC业务,23年的行业沉淀,手里有工信部颁发的 
酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001质量管理体系与ISO27001信息安全管理体系双认证,是CNNIC IP联盟成员,1000万注册资本主体运营,备案号为滇ICP备2020007656号。
选机房的时候,不妨顺手在工信部官网验证一下服务商的资质真伪,资质齐全意味着监管到位,带宽资源不达标你可以投诉到通信管理局,但如果你用的是个人转售的VPS,连维权对象都找不到。










网友评论