找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

594

积分

0

好友

76

主题
发表于 16 小时前 | 查看: 0| 回复: 0

作为Linux用户或管理员,掌握网络测速与诊断技能是应对突发需求、保障系统稳定运行的关键。本文将系统介绍Linux环境下从基础到进阶的各种网络测速方法与工具,助你构建完整的网络性能评估体系。

一、基础篇:网络测速的常用工具

1. speedtest-cli:便捷的公网带宽测试

speedtest-cli是Ookla Speedtest官方网站提供的命令行客户端,能够快速测量互联网上下行带宽。

安装方法:

# Ubuntu/Debian
sudo apt install speedtest-cli

# CentOS/RHEL
sudo yum install speedtest-cli

# 或使用pip安装
sudo pip3 install speedtest-cli

基本使用:

# 简单测速
speedtest-cli

# 列出并指定服务器测试
speedtest-cli --list
speedtest-cli --server <服务器ID>

# 简化输出
speedtest-cli --simple

# 以字节/秒为单位显示
speedtest-cli --bytes

输出示例:

Ping: 23.456 ms
Download: 125.67 Mbit/s
Upload: 45.89 Mbit/s

2. iperf3:专业的端到端带宽测试

iperf3是测量网络最大带宽性能的标准工具,尤其适用于测试两台主机之间的真实吞吐量。

安装:

# Ubuntu/Debian
sudo apt install iperf3
# CentOS/RHEL
sudo yum install iperf3

使用方法:
需要分别在服务器端和客户端执行命令。

服务器端(监听):

iperf3 -s

客户端(发起测试):

# 基本TCP带宽测试
iperf3 -c <服务器IP>

# 测试上传速度(反向测试)
iperf3 -c <服务器IP> -R

# 设置测试时长为30秒
iperf3 -c <服务器IP> -t 30

# 使用4个并行连接测试
iperf3 -c <服务器IP> -P 4

3. wget/curl:通过文件下载估算速度

通过下载已知大小的测试文件,可以快速估算当前网络下载速度。

# 使用wget并计时
time wget http://speedtest.tele2.net/100MB.zip

# 使用curl并输出下载速度
curl -o /dev/null -w "速度: %{speed_download} B/s\n" http://speedtest.tele2.net/100MB.zip

二、进阶篇:网络质量深度分析

1. ping:基础但强大的连通性与延迟测试

ping命令除了检查连通性,还能提供反映网络质量的详细统计信息。

# 发送10个ICMP包并统计
ping -c 10 www.baidu.com

# 显示时间戳(Linux)
ping -c 5 -D www.baidu.com

# 测试大包(用于发现MTU问题)
ping -c 4 -s 1472 www.baidu.com

# 安静模式,只显示摘要
ping -c 20 -q www.baidu.com

关键指标解读:

  • 延迟(Latency):最小/平均/最大值,反映网络响应速度。
  • 丢包率(Packet Loss):是网络稳定性的核心指标。
  • RTT偏差:体现网络抖动(Jitter)情况。

2. mtr:集成的路径追踪与诊断工具

mtr结合了tracerouteping的功能,能持续分析到目标主机的路径上每一跳的网络质量。

# 交互式运行
mtr www.baidu.com

# 生成报告并输出到文件
mtr -r -c 10 www.baidu.com > mtr_report.txt

# 显示IP地址而非主机名
mtr -n www.baidu.com

# 使用TCP协议探测(绕过ICMP限制)
mtr --tcp www.baidu.com

3. iftop:实时流量监控与分析

iftop可以实时显示各个网络连接的带宽占用情况,类似于顶部的网络版。

# 安装
sudo apt install iftop

# 监控默认网卡
sudo iftop

# 监控指定网卡(如eth0)
sudo iftop -i eth0

# 显示端口号
sudo iftop -P

# 不进行DNS解析,按带宽排序
sudo iftop -n -P

三、专业篇:企业级监控与统计

1. nload:简洁直观的实时流量仪表盘

nload提供分网卡的上/下行流量实时曲线图,一目了然。

# 安装
sudo apt install nload

# 使用,可左右箭头切换网卡
nload
nload eth0  # 指定网卡

2. vnStat:轻量级长期流量统计

vnStat是一个后台进程,长期记录网络流量数据并生成日、月、年报表。

# 安装
sudo apt install vnstat

# 查看实时流量(live)
vnstat -l

# 查看日报和月报
vnstat -d
vnstat -m

# 生成图形化输出(需安装vnstati)
vnstati -s -i eth0 -o /tmp/vnstat_summary.png

3. netperf:全面的网络性能基准测试套件

netperf可以模拟多种网络流量模式,测试TCP/UDP的吞吐量、请求/响应时间等。

# 安装
sudo apt install netperf

# 服务器端启动
netserver

# 客户端测试TCP流性能(带宽)
netperf -H <服务器IP> -t TCP_STREAM

# 测试UDP性能
netperf -H <服务器IP> -t UDP_STREAM

# 测试TCP请求/响应性能(交易速率)
netperf -H <服务器IP> -t TCP_RR

四、实战篇:场景化测试脚本

场景1:快速本地网络健康检查

这是一个快速的 Shell 脚本检查,用于日常巡检。

#!/bin/bash
echo “=== 网络连接测试 ===”
ping -c 4 8.8.8.8 | tail -2
echo -e “\n=== DNS解析测试 ===”
nslookup www.baidu.com | grep “Address:”
echo -e “\n=== 公网下载速度测试 ===”
speedtest-cli –simple
echo -e “\n=== 本地接口统计 ===”
ip -s link show | grep -A 3 “eth0|wlan0”

场景2:服务器间内网带宽测试

此脚本自动化两台服务器间的iperf3测试。

#!/bin/bash
SERVER=“目标服务器IP”
PORT=“5201”
echo “启动iperf3服务器端…”
ssh $SERVER “iperf3 -s -p $PORT -D”
echo “等待服务器启动…”
sleep 2
echo -e “\n=== TCP带宽测试 ===”
iperf3 -c $SERVER -p $PORT -t 30
echo -e “\n=== UDP带宽测试 ===”
iperf3 -c $SERVER -p $PORT -u -t 30 -b 100M
echo “清理…”
ssh $SERVER “pkill iperf3”

场景3:自动化持续网络监控

一个简单的 Python 脚本示例,用于周期性监控并记录日志。

#!/usr/bin/env python3
import subprocess
import time
import json
from datetime import datetime

def run_command(cmd):
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        return result.stdout.strip()
    except subprocess.TimeoutExpired:
        return “超时”
    except Exception as e:
        return f“错误: {str(e)}”

def test_ping(target=“8.8.8.8”):
    cmd = f“ping -c 4 {target} | tail -1 | awk -F ‘/’ ‘{{print $5}}’”
    latency = run_command(cmd)
    return {“target”: target, “latency”: latency}

def test_speed():
    cmd = “speedtest-cli –json”
    result = run_command(cmd)
    try:
        data = json.loads(result)
        return {
            “download”: data.get(“download”, 0) / 1000000, # 转换为Mbps
            “upload”: data.get(“upload”, 0) / 1000000,
            “ping”: data.get(“ping”, 0)
        }
    except:
        return None

def main():
    log_file = “/var/log/network_monitor.json”
    while True:
        timestamp = datetime.now().isoformat()
        data = {
            “timestamp”: timestamp,
            “ping”: test_ping(),
            “speed”: test_speed(),
            “interface”: run_command(“ip addr show | grep ‘state UP’”)
        }
        with open(log_file, “a”) as f:
            f.write(json.dumps(data) + “\n”)
        if data[“ping”].get(“latency”) and float(data[“ping”][“latency”]) > 100:
            print(f“警告: 延迟过高 - {data[‘ping’][‘latency’]}ms”)
        time.sleep(300) # 5分钟间隔

if __name__ == “__main__”:
    main()

五、高级技巧与问题排查

1. 提升测速结果准确性

# 临时停止可能占用大量带宽的服务
sudo systemctl stop docker nginx mysql

# 多服务器对比测试,取最优
speedtest-cli –list | head -5 | awk ‘{print $1}’ | xargs -I {} speedtest-cli –server {} –simple

# 多次测试下载速度取平均值
for i in {1..5}; do
    speedtest-cli –simple | grep “Download” | awk ‘{print $2}’
done | awk ‘{sum+=$1} END {print “平均下载速度: ” sum/NR ” Mbit/s”}’

2. 网络问题系统性诊断流程

遵循从本地到远端、从底层到应用的顺序排查:

  1. 检查本地配置ip addr, ip route
  2. 测试网关连通性
  3. 验证DNS解析nslookup, dig
  4. 测试公网连通性ping 8.8.8.8
  5. 分析网络路径mtr
  6. 测量端到端带宽iperf3
  7. 检查本地服务与端口占用netstat -tulpn

六、建立你的网络测试工具箱

根据不同的使用场景,建议组合使用以下工具:

  • 快速日常检查ping + speedtest-cli,配合nload实时看一眼。
  • 深度性能分析iperf3(带宽),mtr(路径),iftop(流量分析)。
  • 长期监控统计vnStat(流量日志),自定义监控脚本,或采用Prometheus + Grafana企业级方案。

实用建议:

  1. 建立基准:在网络正常时记录关键指标(延迟、带宽),作为后续对比的基准线。
  2. 定期测试:形成定期(如每周)执行完整测试的习惯。
  3. 交叉验证:不依赖单一工具的结果,使用不同工具和方法相互印证。
  4. 记录与分析:保存历史测试数据,便于分析网络性能的变化趋势。
  5. 了解上下文:清楚你的网络拓扑、带宽合同限制以及应用对网络的需求。

掌握这些工具和方法,你不仅能从容应对“如何测网速”的提问,更能主动掌控网络健康状况,为系统稳定性和性能优化提供坚实的数据支撑。




上一篇:流式场景维表关联性能实战对比:ClickHouse、Doris、Redis性能实测与选型建议
下一篇:PostgreSQL内存参数调优避坑:maintenance_work_mem与work_mem性能不升反降
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-10 20:08 , Processed in 0.086035 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表