当前位置:首页 > Linux > 正文

如何测试linux服务器网速

Linux服务器上,可通过安装speedtest-cli工具测试网速,执行命令 wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py下载脚本,赋予权限后移动到指定目录,运行 speedtest即可自动检测上传/下行速率。

是关于如何测试Linux服务器网速的详细说明,涵盖多种方法和工具的使用步骤及注意事项:

使用speedtest-cli命令行工具

这是最常用且便捷的方案,基于Speedtest.net全球节点进行测速,具体操作如下:

  1. 安装步骤

    • 通过wgetcurl获取脚本文件:
      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确保权限安全
  2. 基础用法

    • 直接运行无参数命令即可自动选择最优服务器完成测试:
      speedtest

      输出示例包含下载速率(如 Download: 7.66 Mbit/s)、上传速率及延迟等关键指标,若需分享结果,可添加 --share 参数生成包含图表的图片链接。

  3. 高级选项

    • --list:列出所有可用测试节点及其地理距离;
    • --simple:仅显示基础数据(Ping值、上下行速度);
    • --bytes:以字节为单位而非兆比特显示结果。
  4. 自动化监控配置

    如何测试linux服务器网速  第1张

    • 创建定时任务脚本(如 /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

文件传输实测法

适用于验证实际业务场景下的带宽表现:

  1. 操作流程

    • 在服务器端生成一个大尺寸测试文件(例如用 dd 命令创建):
      dd if=/dev/urandom of=testfile bs=1G count=1      # 生成1GB随机数据块
    • 使用客户端工具(如 scprsync 或FTP)从本地下载该文件,观察瞬时速度和稳定性,此方法能反映真实应用场景中的传输效率,尤其适合检测大文件传输瓶颈。
  2. 对比分析

    注意协议差异带来的损耗,例如SSH加密可能导致轻微降速,而HTTP/HTTPS受TLS握手影响更大,多次测试取平均值可减少偶然误差。

专业带宽测量工具iperf

适合双向全双工模式下的精准压测:

  1. 部署步骤

    • 分别于两台机器安装iperf组件:一台作为服务端监听端口,另一台作为客户端发起请求,典型命令如下:
      # 服务端启动监听
      iperf -s -p 5201                 # 指定端口号避免冲突
      # 客户端执行测试(持续10秒)
      iperf -c <目标IP> -p 5201 -t 10   # -P参数可并行多线程测试
    • 支持TCP/UDP模式切换,可通过 -u 启用UDP协议测试丢包率与抖动情况。
  2. 结果解读

    重点关注窗口大小、CPU利用率对性能的影响,若出现波动,可能表明网络拥塞或硬件资源不足。

补充技巧与注意事项

  1. 单位换算陷阱:Linux系统中 iftop 显示的是Mb(兆比特),而 ifstat 采用KB(千字节),两者相差8倍关系,建议统一转换为同一单位进行比较。

  2. 过滤干扰流量:使用 iftop 时按 L 键输入特定IP地址,可单独监控某进程的网络占用情况,例如过滤Web服务相关的连接以排除其他应用干扰。

  3. 多节点交叉验证:不同地区的Speedtest服务器可能存在线路偏好,建议至少测试3个以上不同地域的节点,取中位数作为参考值。

  4. 安全性考量:自动化脚本避免存储敏感信息,定期清理日志文件防止磁盘空间耗尽,对于公网暴露的服务器,限制测速端口的入站访问以提高安全性。


FAQs

Q1: 为什么同一个服务器不同时间的测试结果差异很大?
A: 网络拥塞具有动态特性,高峰时段其他用户的带宽竞争会导致可用资源减少,运营商的国际出口链路质量、本地路由策略调整也会影响结果,建议在非繁忙时间段多次采样求平均值。

Q2: speedtest-cli显示的速度低于运营商承诺值怎么办?
A: 首先确认是否启用了QoS限速策略(如阿里云的突发型实例),其次检查虚拟化环境的资源分配是否合理(例如KVM虚拟机可能因CPU过载导致网络吞吐下降),最后向服务商提交工单要求提供详细的SNMP监控数据进行溯源

0