本文目录导读:

Netperf 是一个经典的网络性能测试工具,主要用于测量 TCP/UDP 的吞吐量、延迟和请求/响应(RR)性能。
由于 Netperf 是基于 C/S(客户端/服务器)架构的,测试前需要明确谁当做服务端,谁当做客户端。
以下是进行基准测试的标准步骤和常用命令:
环境准备
-
安装 Netperf
- Ubuntu/Debian:
sudo apt install netperf - CentOS/RHEL:
sudo yum install netperf(可能需要先启用 EPEL 仓库) - 源码编译: 从官网下载,
./configure && make && sudo make install
- Ubuntu/Debian:
-
网络拓扑确认
- 确定 Server(服务端) 和 Client(客户端) 的 IP 地址。
- 防火墙注意: 服务端需要开放端口(默认是 12865,可通过
-p修改)。
核心测试步骤
启动服务端
在作为服务器的机器上运行 netserver:
netserver
- 默认监听所有 IP 的 12865 端口。
- 可以指定端口或监听特定 IP:
netserver -p 20000 -L 192.168.1.100
客户端运行测试
在客户端机器上使用 netperf 命令进行测试。
基本语法:
netperf -H <服务端IP> [其他参数]
常见基准测试场景与参数
TCP 吞吐量测试
测试网络的最大传输能力(千兆网卡是否达标、网络是否存在瓶颈)。
# 默认测试 TCP 流(STREAM) netperf -H 192.168.1.100 -l 30
-l 30:测试持续 30 秒。- 结果解读:关注 Throughput(吞吐量)。
- 千兆局域网理想值约 940-980 Mbps。
- 万兆局域网理想值约 9.4-9.8 Gbps。
- 如果远低于预期,可能是网卡协商速度、网线质量、CPU 负载或驱动问题。
针对大包优化测试(基于 1460 字节 MTU):
netperf -H 192.168.1.100 -l 30 -m 65536 -t TCP_STREAM
-m 65536:设置发送缓冲区大小为 64KB。
TCP 请求/响应延迟测试(RR)
用于评估常见的 Web 请求、数据库查询或 RPC(远程过程调用)场景。
netperf -H 192.168.1.100 -l 30 -t TCP_RR
- 结果解读:关注 Latency(延迟) 和 Transaction Rate(事务速率)。
- Netperf 以 平均延迟(单位微秒或毫秒)和部分标准偏差的形式给出结果。
- 吞吐量结果中的
Trans Rate数值越高,意味着延迟越低。
小包交互测试(模拟高频数据包):
netperf -H 192.168.1.100 -l 30 -t TCP_RR -r 64,1024
-r 64,1024:请求 size 64 字节,响应 size 1024 字节,调整这两个数值可以模拟不同类型的应用交互。
UDP 吞吐量 & 丢包率测试
用于测试 VoIP(语音通话)、视频流或 DNS(域名解析)场景。
# UDP 默认测试(发送 64 字节包) netperf -H 192.168.1.100 -l 30 -t UDP_STREAM
测试特定大小包的吞吐量 & 丢包:
netperf -H 192.168.1.100 -l 30 -t UDP_STREAM -m 1472
-m 1472:这是 UDP 在标准以太网(1500 MTU)下的最大单包数据量。- 结果解读:输出包含 Throughput(吞吐量) 和关键的 Loss(丢包率)。
如果丢包率大于 0,表明网络或应用层缓冲区存在容量不足或拥塞。
TCP 连接速率测试(CRR)
模拟短连接场景(HTTP/1.0、数据库短连接)。
netperf -H 192.168.1.100 -l 30 -t TCP_CRR
- 结果解读:主要观察系统处理 新建 TCP 连接的能力(每秒连接数),数值较低通常说明 TCP 栈或内核参数(如
tcp_tw_reuse)需要调优。
结果分析要点
-
吞吐量瓶颈识别:
- CPU 利用率在客户端或服务端达到 100%,说明存在 CPU 瓶颈(此时可能需要调整中断亲和性或使用大页内存,具体取决于你的环境)。
- CPU 空闲但吞吐量低,通常是 网络瓶颈(带宽不足、丢包)或 驱动/硬件问题(如网卡缓存、内存带宽不足)。
-
延迟抖动:
- 观察 Netperf 输出的
Stddev(标准偏差),如果该数值较大(例如超过 ±50微秒),说明网络存在抖动,可能影响实时应用。
- 观察 Netperf 输出的
-
双向测试:
- Netperf 默认只测单向,要测双向,可以:
- 方法1:同时运行两个 netperf 实例(一个发,一个收)。
- 方法2:使用高级测试类型(如
TCP_MAERTS其实是为了测试接收端性能,并非标准双向;更推荐-t TCP_RR来模拟双向数据交换)。
- Netperf 默认只测单向,要测双向,可以:
调试技巧
- 查看详细错误:在客户端或服务端加上
-v 2(详细程度参数)可以输出更详细的调试信息,帮助你定位问题。 - 指定测试时间:基准测试建议运行 30-60 秒以上 (
-l 60),以获得稳定结果,短时间的突发流量并不能反映网络的实际稳定带宽。 - 并行测试:使用
-P 0禁用并行控制输出,然后使用-T或-b参数进行多连接测试,可以评估网络在高并发下的性能(但请注意避免被误判为攻击流量)。
总结命令速查
| 场景 | 命令 |
|---|---|
| 标准 TCP 吞吐量 | netperf -H <IP> -l 30 |
| 大包 TCP 吞吐量 | netperf -H <IP> -l 30 -t TCP_STREAM -m 65536 |
| TCP 延迟 | netperf -H <IP> -l 30 -t TCP_RR |
| UDP 吞吐量 | netperf -H <IP> -l 30 -t UDP_STREAM -m 1472 |
| TCP 连接速率 | netperf -H <IP> -l 30 -t TCP_CRR |
建议将测试结果记录下来,作为网络性能的 基线(Baseline),后续在调整网卡参数(如 gro, tso, 中断亲和性 irqbalance)或遇到性能问题时,可以通过与基线对比来快速判断性能波动的原因。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播