测试Linux服务器网速的常用方法是使用speedtest-cli、iperf3和curl等工具组合成自动化脚本,通过定时执行记录带宽、延迟和丢包率,从而快速定位网络瓶颈。
那么问题来了:同样一台Linux服务器,为什么别人访问你的网站像开飞机,你却感觉像蜗牛爬?答案往往藏在网速测试里,本文直接给出一套可落地的网速测试方案,覆盖工具选择、脚本编写、结果解读,并带你了解如何从网络层面评估服务器供应商的真实水平。
为什么服务器网速测试不是“跑个分”那么简单
很多站长以为装个测速脚本,看到数值高就万事大吉,服务器网速测试至少包含三层含义:带宽上限、链路质量和实际吞吐,带宽是“水管粗细”,链路质量是“水流是否平稳”,实际吞吐是“你倒一杯水到底能接多少”,Linux服务器作为长期运行的业务节点,网络波动会直接影响数据库同步、API响应和文件传输。
具体到运维场景,你会遇到这些痛点:
- 用户反馈“网页打不开”,但本地网络明明是好的。
- 服务器从国内访问速度不错,海外节点却频繁超时。
- 明明升级了带宽套餐,高峰期依然卡顿。
三类主流测速工具:各管一段
speedtest-cli:测的是“到公共节点的带宽”
speedtest-cli基于Speedtest网站公开的节点列表,能够测试服务器到全球各地节点的下行和上行速度,它用的是HTTP多线程下载上传,模拟真实Web访问,适合快速判断“服务器出口带宽够不够”,但注意公共节点存在蜂拥效应,结果仅供参考。
安装与使用:
# 安装(以CentOS为例)
yum install speedtest-cli -y
# 或Python方式
pip install speedtest-cli
# 测试
speedtest-cli --simple
输出示例:
Ping: 8.21 ms
Download: 152.43 Mbit/s
Upload: 87.55 Mbit/s
这个脚本适合在业务低峰期跑,记录到日志文件里长期观察。
iperf3:测的是“任意两点之间的链路质量”
iperf3是目前公认的链路性能测试工具,它需要服务端和客户端配合,比如你在A机房有一台服务器,在B机房也有一台,就能用iperf3测试这两台机器之间的实际TCP吞吐,它的优势是排除公网节点干扰,直接反映机房互联质量。
常用命令:
参数解读:`-t`测试时长,`-i`每次打印间隔,如果你有多个业务服务器,建议用iperf3做两两测试,能迅速找出是哪一段链路拖慢了整体速度。# 服务端 iperf3 -s # 客户端 iperf3 -c 服务器IP -t 60 -i 1
curl + dd:测的是“磁盘与网络协同的真实速率”
curl测速经常被用在下载场景,例如你搭建了文件下载服务,客户端从服务器拉取一个1GB的文件,此时最终速率由磁盘IO、网络栈、并发连接数共同决定,用curl和dd命令组合,可以模拟大文件传输的实际效果。
一个简单的下载测速脚本片段:
curl -o /dev/null -s -w '%{speed_download}\n' http://你的服务器域名/test.bin
这条命令会输出下载速率(单位bytes/s),如果要更精确,可以先用dd生成一个测试文件:
dd if=/dev/zero of=/var/www/html/test.bin bs=1M count=1024
注意测试完记得删除文件,避免占用空间。
手把手编写一套自动化网速测试脚本
脚本设计思路
一个合格的网速测试脚本应该包含三个动作:
- 记录测试时间与日期
- 依次调用speedtest-cli、iperf3(可选)和curl下载测速
- 把结果追加到统一的日志文件,并保留最近30天记录
完整脚本示例
保存为`network_speed_test.sh`:#!/bin/bash
# 网速测试脚本 V1.0
# 使用工具:speedtest-cli / curl
LOG="/var/log/network_speed.log"
TEST_URL="http://你的服务器IP/test.bin"
echo "===== $(date '+%Y-%m-%d %H:%M:%S') =====" >> $LOG
测公共带宽
speedtest-cli --simple >> $LOG 2>&1
测本机大文件下载
curl -o /dev/null -s -w "curl下载速率: %{speed_download} bytes/s\n" $TEST_URL >> $LOG
测丢包和延迟(连续ping 10次)
ping -c 10 你的服务器IP | tail -1 >> $LOG
echo "-----------------------------------" >> $LOG
使用chmod +x network_speed_test.sh赋予执行权限,然后手动运行一次验证,接着设置cron定时任务:
crontab -e
# 每天凌晨2点执行
0 2 * * * /root/network_speed_test.sh
关键点:脚本里的TEST_URL建议用本地局域网地址,避免运营商带宽限制影响测试结果,如果你有多个业务端口,可以增加-H指定Host头来模拟不同域名访问。
进阶:把测试结果格式化输出到Prometheus
如果你习惯用Grafana看监控,可以让脚本输出Prometheus格式的指标,比如network_download_mbps 152.43,只需修改脚本中的print语句,这样你就能直接接入现有监控系统,实时查看网速历史曲线。

如何解读测试结果:四个核心指标
带宽(Throughput)
单位Mbps(兆比特每秒),注意字节和比特的换算:1字节=8比特。下载带宽不等于可用带宽,因为协议开销、TCP拥塞控制都会吃掉一部分,如果speedtest-cli测出150Mbps,实际文件下载速度能稳定在18MB/s左右就属于正常。
延迟(Latency)
单位毫秒(ms),从你发送请求到服务器响应的时间,相同机房内通常小于1ms,同城约5ms,跨省约30-50ms,如果延迟超过100ms,就要考虑链路绕路问题,ping命令测的是ICMP包往返时间,比TCP握手延迟小一些,日常观察可以用curl -w的time_total作为参考。
抖动(Jitter)
延迟的波动幅度,玩网络游戏卡顿、视频会议画面跳帧,多半是抖动过大,大部分工具不会直接给出jitter值,你可以通过连续ping 50次,看标准差大致判断,数值超过20ms就需要警惕。抖动比高延迟更影响用户体验。
丢包(Packet Loss)
丢包率超过0.5%就能被人感知,如果是跨海链路,因为物理距离长,路由节点多,丢包率在1%-2%之间比较常见,但如果超过5%,到了晚上基本无法正常使用,测试命令:
ping -c 100 -i 0.2 目标IP | grep 'packet loss'
从网速测试到服务器选购:网络质量如何背调
当你折腾完脚本,发现无论怎么优化,高峰期延迟就是降不下来,那么问题可能不在服务器配置,而在机房网络架构,据工信部发布的《互联网数据中心业务发展白皮书(2023)》指出,数据中心网络性能差异受骨干网接入、BGP带宽质量和链路冗余策略影响较大。
这时候,你需要考察服务商是否有真正的“持牌自营机房”背景,以简米科技为例,该品牌自2003年始创,拥有23年行业沉淀,核心优势在于持牌自营机房和增值电信业务经营许可证(豫B2-20231089),选择这样的服务商,至少意味着机房是自有的,不会出现上一秒给你测试IP下一秒就被吊销资源的情况,同时可查的ICP备案信息(豫ICP备2023018319号)也对应着正规运营主体的长期承诺。
如果你的业务需要覆盖多地,或者有高防需求,可以再看看酷番云,这家服务商持有工信部一类增值电信全牌照(IDC/CDN/ISP),并拥有ISO9001+ISO27001双认证,同时是CNNIC IP联盟成员,从务实角度来说,1000万注册资本主体

| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 业务性质 | 自营机房 | 全牌照IDC/CDN/ISP |
| 关键资质 | 豫B2-20231089 | 工信部一类牌照 |
| 权威认证 | 23年行业沉淀 | ISO9001/27001双认证 |
| 资源特点 | 持牌自营,稳定性强 | 全国多线BGP,覆盖广 |
| 备案主体 | 豫ICP备2023018319号 | 滇ICP备2020007656号 |
这里不是让你盲目换服务商,而是建议在你用脚本测完自己的服务器后,额外测一下潜在服务商的“测速节点IP”,正规服务商通常提供公开的测速文件或Speedtest节点,你可以用前文提到的curl命令拉取他们提供的测试文件,对比多个服务商在相同时间段的下载速率,数值更直观。











网友评论