进行物理机网络吞吐测试时,很多人只关注“能跑到多少Gbps”,却忽略了流量方向。单向压测让数据从一台物理机流向另一台,便于观察某个方向的带宽上限;双向压测则让两端同时发送和接收,更接近全双工链路、主机间复制或东西向访问的真实状态。
两种方法没有绝对的优劣,关键在于测试目标。若只测单向结果,可能掩盖收发同时发生时的网卡队列、内存访问和交换机转发压力;若直接进行双向压测,又可能难以判断究竟是哪一个方向先出现瓶颈。
先理解单向压测和双向压测的差异
单向压测:适合确认单条路径上限
单向压测只让一端持续发送,另一端接收。它适用于检查物理机到交换机、交换机到物理机,或两台主机之间某一方向的可用带宽。测试结果比较容易解释,适合发现网卡协商速率异常、端口限速、光模块链路质量问题以及发送端或接收端的单侧性能不足。
例如,两台配备10GbE接口的服务器之间进行单向测试,结果约为8至9.5Gbps并不一定代表设备故障。协议开销、数据包长度、CPU调度、驱动设置和测试工具参数都会影响结果。小包场景下,吞吐量通常低于大包场景,时延和丢包率也更值得关注。
双向压测:适合验证同时收发能力
双向压测让两端在同一时间互相发送数据。它适合模拟数据库主备同步、虚拟机迁移、文件系统复制,以及同一链路上同时存在上传和下载的场景。此时需要观察总吞吐量,也要分别记录两个方向的结果。
双向结果低于两次单向结果之和是常见现象。物理机的处理器、内存带宽、网卡队列、PCIe通道和交换机缓存可能共同受压。若某一方向明显下降,而另一方向基本稳定,应进一步检查端口配置、链路质量或主机中断分配,而不是简单判断带宽不足。
物理机网络吞吐测试的执行步骤
- 确认测试拓扑。记录两台物理机、交换机端口、网卡接口和链路速率,尽量避免测试流量经过无线链路、复杂防火墙或共享出口。
- 统一基础条件。确认两端使用相同或兼容的协议版本,检查网卡协商状态、MTU、双工模式和端口速率。测试期间暂停大文件传输、系统升级等无关任务。
- 先做单向基线。分别测试主机A到主机B、主机B到主机A。每个方向可运行约30秒至数分钟,并至少重复几轮,记录平均吞吐、最低吞吐、时延和丢包率。
- 再做双向测试。让两端同时产生流量,保持与单向测试相近的数据包大小和持续时间。记录总吞吐以及收发两个方向的独立数值,避免只看一个汇总结果。
- 同步观察系统指标。查看网卡丢包、错误包、队列长度、软中断、处理器占用和内存压力。若测试工具显示吞吐下降,但网卡错误包增加,优先排查链路和端口;若错误包正常而处理器长期满载,则应检查主机处理能力。
- 改变一个变量复测。可以依次调整数据包大小、并发连接数或单流与多流模式,但每次只改变一项。这样才能区分链路带宽、单流能力和并发处理能力。
如何根据场景选择测试方式
| 测试方式 | 适用场景 | 主要优点 | 需要注意 |
|---|---|---|---|
| 单向压测 | 链路验收、端口排障、单方向业务 | 结果清晰,便于定位方向性问题 | 不能代表同时收发时的表现 |
| 双向压测 | 主备同步、文件复制、双向业务 | 更接近全双工并发状态 | 资源竞争增加,结果解释更复杂 |
如果目标是判断某条新链路是否达到设计速率,应先做单向压测,再做反向验证。若目标是评估生产环境中上传与下载同时进行的稳定性,则双向压测不可省略。对虚拟化主机而言,还应在业务负载较低和业务负载较高时分别测试,因为虚拟交换、存储访问和虚拟机调度可能改变结果。
读懂结果,避免只看峰值
合格的物理机网络吞吐测试报告至少应包含测试方向、持续时间、数据包大小、并发方式、平均吞吐、峰值吞吐、时延、丢包率和主机资源占用。峰值只能说明某个瞬间的能力,持续吞吐更能反映链路是否稳定。
如果单向两侧结果接近,而双向总吞吐明显下降,通常说明并发收发触发了主机或交换设备的资源竞争。如果吞吐时高时低,同时出现错误包或重传增加,应检查光纤、铜缆、端口协商和交换机日志。若吞吐稳定但时延明显上升,则可能是队列积压,带宽并非唯一问题。

测试结果应与实际业务模型对应:大文件传输看吞吐,短事务访问看时延和并发,小包通信还要关注每秒处理能力。
常见问题
单向测试很高,为什么双向测试变低?
双向流量会同时消耗网卡队列、处理器、内存和交换机缓存,下降并不自动意味着链路故障,应结合错误包、时延和资源占用判断。
一次测试持续多久比较合适?
排查速率问题时,约30秒可用于快速筛查;观察稳定性时,通常应延长到数分钟,并进行多轮重复。
要不要只使用大数据包?
不应只测一种包长。大包更容易接近带宽上限,小包更能暴露时延、并发处理和队列压力。
测试时需要记录哪些信息?
至少记录拓扑、接口速率、测试方向、持续时间、包长、吞吐、时延、丢包、错误包和主机资源占用。
总之,物理机网络吞吐测试应先用单向压测建立清晰基线,再根据业务需要加入双向压测。只有同时比较方向、持续时间和系统资源,才能判断网络瓶颈究竟来自链路、设备还是物理机本身。


