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 秒以上,才能暴露这种问题。
四个指标的关系
这四个指标不是孤立的。它们之间会互相影响,我画了张图帮你理清关系:
从这张图能看出:带宽是天花板,延迟和丢包是实际瓶颈,抖动则是网络质量的「晴雨表」。做吞吐测试时,这四个指标必须一起看,单独看任何一个都会误判。
测试前的准备
在正式开始测试之前,有几个准备工作要做:
- 确认测试环境:两端设备、网线、交换机端口都要确认是千兆还是万兆
- 关闭干扰服务:防火墙、杀毒软件、流量整形工具都关掉
- 校准时间:两端服务器时间要同步,否则延迟数据不准
- 准备测试工具:iPerf3、nuttcp、qperf 选一个就行
小技巧: 我习惯先用 iPerf3 跑一次 TCP 测试,再用 UDP 模式测一遍。TCP 测的是实际吞吐,UDP 测的是链路极限。两个结果一对比,问题在哪就清楚了。
常见误区
做吞吐测试这么多年,我见过不少新手踩坑。这里列几个最常见的:
- 只测一次就下结论:网络是动态的,至少测 3 次取平均值
- 忽略 CPU 瓶颈:有时候吞吐上不去,是服务器 CPU 先跑满了
- 测试时间太短:10 秒的测试看不出问题,至少 30 秒起步
- 不关注双向流量:很多链路上下行不对称,要分别测
血的教训: 我曾经只测了 10 秒就报告说链路没问题,结果业务上线后高峰期直接崩了。后来才发现,那条链路在持续负载 30 秒后会触发交换机的流控机制,吞吐直接掉到 10%。从那以后,我每条链路都至少测 60 秒。
好了,这一章的内容就到这里。吞吐测试是网络优化的基础,这四个指标你记住了,后面章节咱们再深入讲怎么测、怎么优化。