1.
概述与准备工作
目的:明确测试目标(吞吐、并发、延迟、IOPS)。
准备:两台或多台测试节点(客户端/服务器),相同镜像、时间同步、关闭不必要服务,记录硬件与固件版本。
2.
搭建可重复的测试环境
固定网络拓扑:直通或交换机,尽量避免中间其它流量;设置静态IP与MTU(如9000用于Jumbo Frame测试)。
配置内核参数快照:sysctl -a > /root/sysctl_before.txt 保留基线。
3.
网络吞吐与延迟基准(iperf3)
部署:在服务器端运行 iperf3 -s;客户端跑单流与多流测试:iperf3 -c
-P 1 -t 60;iperf3 -c -P 10 -t 60。
记录:带宽、丢包、重传。对比不同并发、不同窗口(-w)与TCP/UDP。
4.
链路质量与丢包分析(ping/mtr/tcpdump)
使用 ping -i 0.2 -s 1500 持续测试延迟尖峰;mtr 用于诊断路径问题。
用 tcpdump -i eth0 -w test.pcap 捕获丢包或重传,Wireshark 分析 TCP Retransmission、SACK。
5.
网卡能力与驱动调优(ethtool)
查看能力:ethtool -k eth0;调整关闭或开启 offload(gro,gso,tso)并测试差异:ethtool -K eth0 tso off gso off gro off。
修改中断/队列:检查/调整RX/TX队列、RSS,使用 ethtool -L 绑定队列。
6.
CPU 与 IRQ 绑定
检查中断分布:cat /proc/interrupts;用 irqbalance 或手动将中断绑定到特定CPU(echo > /proc/irq//smp_affinity)。
在高并发网络测试时,确保中断与应用线程在同 NUMA 节点。
7.
磁盘/文件系统 IO 基准(fio 实例)
常用fio命令示例:fio --name=randrw --rw=randrw --rwmixread=70 --bs=4k --size=10G --numjobs=8 --iodepth=32 --direct=1 --runtime=300。
分辨随机/顺序、不同块大小、直写(--direct=1)与缓存模式。
8.
快速测试与对照(dd, iostat, sar)
顺序带宽:dd if=/dev/zero of=/mnt/testfile bs=1M count=10240 oflag=direct;监控:iostat -x 1、sar -d。
注意FS缓存导致的假阳性,使用sync与drop_caches后重新测试。
9.
分析结果与定位瓶颈
网络瓶颈:低带宽/高重传->链路/MTU/交换设备问题或NIC offload不当;延迟尖峰->中断分配、CPU竞争或跨机房路由问题。
IO瓶颈:高await/高svctm->磁盘拥塞;低IOPS但高带宽->顺序读写场景。
10.
调优建议与复测流程
先改单一项(如关闭 tso),记录sysctl与ethtool前后差异,复测并比对。同一测试至少跑3次取中位数。
建立自动化脚本存档测试参数、日志和结果(CSV/JSON),便于回归对比。
11.
常见风险与注意事项
在站群环境避免在生产时间做破坏性测试;MTU、Jumbo Frame全链路一致才有效;RAID/缓存会影响IO基线。
备份关键数据,测试前后恢复配置快照。
12.
问:如何确认是网络还是磁盘导致站群响应慢?
可先并行运行网络基准(iperf3)和IO基准(fio),观察CPU、netstat、iostat指标:如果网络丢包高/带宽低为网络问题;磁盘队列长度和await飙升为IO问题。
13.
答:判断步骤与命令示例
步骤:1) iperf3 -c server 2) fio 如上示例 3) iostat -x 1 4) tcpdump 捕获异常。对比结果与系统负载、中断分布即可定位。
14.
问:测试时如何保证结果可重复与可靠?
固定环境变量(CPU governors、服务进程、网络流量),使用相同测试脚本、运行多次取中位数并保存全部日志与快照。
15.
答:关键要点总结
形成规范化流程:环境准备->基线测->逐项调优->复测归档。使用 iperf3/fio/ethtool/iostat/tcpdump 组合可覆盖大部分网络与IO问题诊断场景。
来源:性能测试指南教你检验组装香港站群服务器的网络与IO表现