1. 网络吞吐测试概述

各位好,我是老张。做网络性能优化这行十几年了,今天咱们聊聊网络吞吐测试。说白了,这就是给网络做一次「体检」——看看你的链路到底能跑多快、稳不稳。

我记得刚入行那会儿,有个项目上线前没做吞吐测试,结果业务高峰期直接卡死。从那以后,我养成了一个习惯:任何网络变更,先测吞吐再说。

什么是网络吞吐量

网络吞吐量,简单讲就是单位时间内成功传输的数据量。单位通常是 bps(比特每秒),或者更常用的 Mbps、Gbps。

举个例子:你买了一条 1Gbps 的专线,但实际传文件时发现只有 300Mbps。这 300Mbps 就是吞吐量,1Gbps 是理论带宽。两者之间的差距,就是我们要解决的问题。

核心公式:

吞吐量 = 成功传输的数据量 ÷ 传输时间

注意是「成功传输」——重传的数据不算。

为什么吞吐测试这么重要

你想想看,没有吞吐数据,你怎么知道网络瓶颈在哪?我见过太多团队,业务卡了就去加带宽,结果发现是交换机端口协商错了,或者网卡驱动没更新。

吞吐测试能帮你回答三个关键问题:

  • 链路到底能跑多少? 理论值和实际值差多少
  • 瓶颈在哪? 是带宽、设备、还是配置问题
  • 优化有效吗? 改完配置后,吞吐提升了多少

我的经验: 每次做网络变更后,我都会跑一轮吞吐测试。哪怕只是改了个 MTU,也要确认一下。曾经有一次,就因为 MTU 没对齐,吞吐直接掉了 40%。

核心指标详解

吞吐测试不是只看一个数字。四个指标必须同时关注:带宽、延迟、抖动、丢包率。它们互相影响,缺一不可。

指标 定义 单位 影响
带宽 链路的最大传输能力 Mbps / Gbps 决定吞吐上限
延迟 数据从源到目的的时间 毫秒 (ms) 影响 TCP 窗口增长
抖动 延迟的变化幅度 毫秒 (ms) 影响实时应用质量
丢包率 丢失数据包的比例 百分比 (%) 触发 TCP 重传,降低吞吐

带宽

带宽是理论最大值,就像高速公路的限速。但实际能跑多少,取决于路况、车况、还有收费站(协议开销)。

我经常跟团队说:别只看带宽数字。1Gbps 的链路,去掉 TCP/IP 头部、协议握手、重传开销,实际吞吐能有 800Mbps 就算不错了。

延迟

延迟是数据的「往返时间」。你发一个包,到对方再回来,这个时间就是 RTT(Round-Trip Time)。

为什么会影响吞吐?因为 TCP 有拥塞控制。延迟越大,窗口增长越慢,吞吐自然上不去。我调过最夸张的一个案例:跨洋链路延迟 300ms,吞吐死活上不了 50Mbps,后来上了 TCP 优化才解决。

抖动

抖动是延迟的「波动幅度」。网络不稳定时,延迟一会儿 10ms,一会儿 200ms,这就是抖动大。

对于视频会议、VoIP 这类实时应用,抖动比延迟更致命。延迟高还能忍,抖动大会导致声音断断续续、画面卡顿。

丢包率

丢包率是最直接的杀手。一旦丢包,TCP 就会触发重传,窗口减半,吞吐直接腰斩。

嗯,这里要注意:丢包率不是 0% 才算正常。有线网络丢包率低于 0.1% 可以接受,无线网络可以放宽到 1%。但如果超过 5%,基本就没法用了。

避坑指南: 我曾经遇到过一个问题:测试时丢包率只有 0.01%,但业务就是卡。后来发现是间歇性丢包——平时不丢,高峰期丢。所以测试一定要跑足够长时间,至少 60 秒以上,才能暴露这种问题。

四个指标的关系

这四个指标不是孤立的。它们之间会互相影响,我画了张图帮你理清关系:

网络吞吐核心指标关系图 吞吐量 带宽 延迟 抖动 丢包率 上限 制约 波动 重传 带宽越大,延迟可能越高 延迟波动 产生抖动 高延迟 增加丢包 四个指标相互影响:带宽决定上限,延迟和丢包制约实际吞吐,抖动反映网络稳定性

从这张图能看出:带宽是天花板,延迟和丢包是实际瓶颈,抖动则是网络质量的「晴雨表」。做吞吐测试时,这四个指标必须一起看,单独看任何一个都会误判。

测试前的准备

在正式开始测试之前,有几个准备工作要做:

  1. 确认测试环境:两端设备、网线、交换机端口都要确认是千兆还是万兆
  2. 关闭干扰服务:防火墙、杀毒软件、流量整形工具都关掉
  3. 校准时间:两端服务器时间要同步,否则延迟数据不准
  4. 准备测试工具:iPerf3、nuttcp、qperf 选一个就行

小技巧: 我习惯先用 iPerf3 跑一次 TCP 测试,再用 UDP 模式测一遍。TCP 测的是实际吞吐,UDP 测的是链路极限。两个结果一对比,问题在哪就清楚了。

常见误区

做吞吐测试这么多年,我见过不少新手踩坑。这里列几个最常见的:

  • 只测一次就下结论:网络是动态的,至少测 3 次取平均值
  • 忽略 CPU 瓶颈:有时候吞吐上不去,是服务器 CPU 先跑满了
  • 测试时间太短:10 秒的测试看不出问题,至少 30 秒起步
  • 不关注双向流量:很多链路上下行不对称,要分别测

血的教训: 我曾经只测了 10 秒就报告说链路没问题,结果业务上线后高峰期直接崩了。后来才发现,那条链路在持续负载 30 秒后会触发交换机的流控机制,吞吐直接掉到 10%。从那以后,我每条链路都至少测 60 秒。

好了,这一章的内容就到这里。吞吐测试是网络优化的基础,这四个指标你记住了,后面章节咱们再深入讲怎么测、怎么优化。