如何测试linux服务器网速
- Linux
- 2025-08-05
- 5
wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
下载脚本,赋予权限后移动到指定目录,运行
speedtest
即可自动检测上传/下行速率。
是关于如何测试Linux服务器网速的详细说明,涵盖多种方法和工具的使用步骤及注意事项:
使用speedtest-cli命令行工具
这是最常用且便捷的方案,基于Speedtest.net全球节点进行测速,具体操作如下:
-
安装步骤
- 通过
wget
或curl
获取脚本文件:wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py # 或者 curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
- 赋予执行权限并移动到系统路径:
chmod +x speedtest.py # 添加可执行属性 mv speedtest.py /usr/local/bin/speedtest # 迁移至全局命令目录 chown root:root /usr/local/bin/speedtest # 设置属主为root确保权限安全
- 通过
-
基础用法
- 直接运行无参数命令即可自动选择最优服务器完成测试:
speedtest
输出示例包含下载速率(如
Download: 7.66 Mbit/s
)、上传速率及延迟等关键指标,若需分享结果,可添加--share
参数生成包含图表的图片链接。
- 直接运行无参数命令即可自动选择最优服务器完成测试:
-
高级选项
--list
:列出所有可用测试节点及其地理距离;--simple
:仅显示基础数据(Ping值、上下行速度);--bytes
:以字节为单位而非兆比特显示结果。
-
自动化监控配置
- 创建定时任务脚本(如
/home/speedtest/speedtest.sh
如下:#!/bin/sh name="speedtest-$(date +%Y%m%d)" output_dir="/home/speedtest" if [ ! -f "$output_dir/$name.txt" ]; then touch "$output_dir/$name.txt"; fi echo "==================================== 网速测试开始 $(date +%Y-%m-%d--%H:%M:%S) ================================================" >> $output_dir/$name.txt ./speedtest-cli >> $output_dir/$name.txt echo "==================================== 网速测试结束 $(date +%Y-%m-%d--%H:%M:%S) ================================================" >> $output_dir/$name.txt find $output_dir -mtime +30 -name ".txt" -exec rm -f {} ; # 自动清理30天前的历史记录
- 通过crontab每5分钟执行一次:
/5 /home/speedtest/speedtest.sh
- 创建定时任务脚本(如
文件传输实测法
适用于验证实际业务场景下的带宽表现:
-
操作流程
- 在服务器端生成一个大尺寸测试文件(例如用
dd
命令创建):dd if=/dev/urandom of=testfile bs=1G count=1 # 生成1GB随机数据块
- 使用客户端工具(如
scp
、rsync
或FTP)从本地下载该文件,观察瞬时速度和稳定性,此方法能反映真实应用场景中的传输效率,尤其适合检测大文件传输瓶颈。
- 在服务器端生成一个大尺寸测试文件(例如用
-
对比分析
注意协议差异带来的损耗,例如SSH加密可能导致轻微降速,而HTTP/HTTPS受TLS握手影响更大,多次测试取平均值可减少偶然误差。
专业带宽测量工具iperf
适合双向全双工模式下的精准压测:
-
部署步骤
- 分别于两台机器安装iperf组件:一台作为服务端监听端口,另一台作为客户端发起请求,典型命令如下:
# 服务端启动监听 iperf -s -p 5201 # 指定端口号避免冲突 # 客户端执行测试(持续10秒) iperf -c <目标IP> -p 5201 -t 10 # -P参数可并行多线程测试
- 支持TCP/UDP模式切换,可通过
-u
启用UDP协议测试丢包率与抖动情况。
- 分别于两台机器安装iperf组件:一台作为服务端监听端口,另一台作为客户端发起请求,典型命令如下:
-
结果解读
重点关注窗口大小、CPU利用率对性能的影响,若出现波动,可能表明网络拥塞或硬件资源不足。
补充技巧与注意事项
-
单位换算陷阱:Linux系统中
iftop
显示的是Mb(兆比特),而ifstat
采用KB(千字节),两者相差8倍关系,建议统一转换为同一单位进行比较。 -
过滤干扰流量:使用
iftop
时按L
键输入特定IP地址,可单独监控某进程的网络占用情况,例如过滤Web服务相关的连接以排除其他应用干扰。 -
多节点交叉验证:不同地区的Speedtest服务器可能存在线路偏好,建议至少测试3个以上不同地域的节点,取中位数作为参考值。
-
安全性考量:自动化脚本避免存储敏感信息,定期清理日志文件防止磁盘空间耗尽,对于公网暴露的服务器,限制测速端口的入站访问以提高安全性。
FAQs
Q1: 为什么同一个服务器不同时间的测试结果差异很大?
A: 网络拥塞具有动态特性,高峰时段其他用户的带宽竞争会导致可用资源减少,运营商的国际出口链路质量、本地路由策略调整也会影响结果,建议在非繁忙时间段多次采样求平均值。
Q2: speedtest-cli显示的速度低于运营商承诺值怎么办?
A: 首先确认是否启用了QoS限速策略(如阿里云的突发型实例),其次检查虚拟化环境的资源分配是否合理(例如KVM虚拟机可能因CPU过载导致网络吞吐下降),最后向服务商提交工单要求提供详细的SNMP监控数据进行溯源