前言
主要介绍性能测试过程中,或在测试前进行环境检查,网络部分常用监控。
通过查看发现收发包的吞吐率达到网卡最大上限,网络数据报文有因为这类原因而引发的丢包、阻塞等现象都证明当前网络可能存在瓶颈。在进行性能测试时为了减小网络的影响,一般都在局域网中进行测试。
一、常用概念
网络主要需要了解:网络配置、TCP/IP协议、网络收发流程、高级路由、网络Qos、网络防火墙、C10K与C100K等相关部分内容。
-
socket
socket定义:套接字是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭操作。套接字允许应用程序将IO插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
-
TCP/IP:网际协议群
用于网络通信的协议集合或者系统。IP或ICMP、TCP或UDP、Telnet或FTP、以及HTTP等都属于TCP/IP协议。TCP/IP协议为互联网而开发定制的协议族,因此TCP/IP就是互联网协议。TCP/IP协议模型就有OSI模型分为7层,一般我们看到是四层TCP/IP协议栈。
-
网卡
RDMA(Remote Direct Memory Access),远程直接内存访问,它将数据从一台计算机内存传输到另一台计算机,无需操作系统介入,降低CPU调度。
零拷贝(zero copy),网卡可直接与应用内存相互传输数据,从而消除了在应用内存与内核之间复制数据的需要,传输延迟会显著下降。
RoCE(RDMA over Converged Ethernet),目前有RoCEv1和RoCEv2两个版本,10Gb及以上的新型NIC(网络接口卡)和switch都集成了RoCE支持。
IB(InfiniBand),具有高带宽,低延时,高可靠,满足集群无限扩展,但是IB使用成本较高,必须配套专用交换机和线缆。
二、性能指标
吞吐量(BPS、QPS、PPS)、延迟、丢包、TCP重传
三、性能分析
工具或命令:ethtool
、sar
、ping、netstat/ss
、ifstat、ifconfig、tcpdump
、wireshark、iptables
、traceroute、ipcontrack、perf
模块 | 类型 | 度量方法 | 衡量标准 |
---|---|---|---|
网络 | 状态 | 1.sar –n DEV收发计数大于网卡上限 2.ifconfig RX/TX带宽超过网卡上限 3.cat /proc/net/dev速率超过上限 4.nicstat的util基本满负荷 | 1.收发包的吞吐率达到网卡上限 2.有延迟 3.有丢包 4.有阻塞 |
网络 | 满载 | 1.ifconfig dropped有计数 2.nestat –s “segments retransmited”有计数 3.Sar –n DEV rxdrop txdrop有计数 | 统计的丢包有计数证明已经满了 |
网络 | 错误 | 1.ifconfig,“errors” 2.netstat –i,”RX-ERR”/”TX-ERR” 3.sar –n EDEV,”rxerr/s””txerr/s” 4.ip –s link,”errors” | 错误有计数 |
四、调优方法
网卡调优:MTU、队列长度、链路聚合;
协议调优:HTTP、TCP、overlay;
资源控制:Qos;
内核调优:NAT调优、功能卸载、负载均衡、DPDK
五、常用分析
- sar命令解析
sar -n DEV 2 2 *#网络传输情况,每2秒打印一次,共打印2次*
sar -n EDEV 2 2 *#网络传输失败情况,每2秒打印一次,共打印2次*
说明:
DEV:报告网络设备的统计信息
EDEV:报告网络设备的错误统计信息
使用技巧
sar统计输出到指定文件:
sar –n DEV 1 10 –o sar.out
- 网口详情查询
通过网口详情查询,可以了解当前组网网口支持最大能力,配合sar命令定位是否已达到网络瓶颈(交换机配置及检查略)
ip addr|grep p6p1
ethtool -i p6p1
lspci |grep Eth
ethtool p6p1
说明:
1000Mbps=1000000kbps=125Mbytes/sec(下载速度不会超过125MB每秒)
网口信息配置路径:/etc/sysconfig/network-scripts/
重启网口配置:systemctl restart network
- 网络带宽限制
为了满足应用和数据库服务在不同网络场景下性能测试,可以使用linux内核自带tc工具对网口进行限速,参考命令如下:
添加限速
/sbin/tc qdisc add dev em1 root tbf rate 1mbit latency 50ms burst 30k #scp带宽约为12.5MB/s
/sbin/tc qdisc add dev em1 root tbf rate 512kbit latency 50ms burst 30k #scp带宽约为6MB/s
删除限速
/sbin/tc qdisc del dev em1 root tbf rate 1mbit latency 50ms burst 30k
说明:
burst 桶的大小
指定了最多可以有多少令牌能够即刻使用,若令牌数量不够可能会导致网口不可用,通过重启服务器解决。
mbps和MB/s单位转换
Mbps(Mb/s):每秒传输的位数量(b:bit)
MB/s:每秒传输的字节数量(B:Byte)
1Byte=8bit,8Mbps=1MB/s
- 网口极限带宽压测
前体条件:
1、已安装好对应平台iperf工具
2、选取两台设备,一台做client,另一台做server
执行压测
Server侧:iperf -s -p 5001
Client侧:iperf -c 192.168.2.29 -t 20 -i 5 -P 4
参数说明:
-c :客户端,-s:服务器,-p:监听端口,-t:测试时间,-i:打印间隔,-P:并发数
结果说明:
网口为万兆网卡,最大传输带宽为9.41Gb/s≈1.18GB/s,网卡处理大包实际能力为网口能力的80% ~ 90%
- tcpdump抓包
tcpdump是linux系统自带抓包工具,可抓多种协议类型的包,获取的包可以用wireshark等工具进行解析。
tcpdump tcp -i p6p1 -s 0 port 53221 -w ./target.cap #将数据存储到指定路径
tcpdump -i p6p1 -c5 -nn -X port 54321 #抓指定端口包,计数5次
- 网口监控
监控总体带宽使用:vnstat、ifstat、dstat、collectl
每个套接字连接的带宽使用:iftop、iptraf、tcptrack、pkstat、netwatch、trafshow
每个进程带宽使用:nethogs