在性能测试中,特别是测试云计算相关产品时,网络是影响性能的关键的因素之一,此文主要介绍网络性能如何监控以及常见网络性能问题如何定位。
1 常见网络模型和架构
首先介绍一下网络交互的过程中,数据包是怎么走的。从发送到被接收,经过的路径大致如下,以一次网络交互为例,一个数据包自发送端从上往下经由用户态空间的应用、系统内核空间到达网卡驱动,然后通过数据链路传输到达接收端,再从下往上经过网卡驱动、系统内核空间最终到达用户态空间的应用中等待被处理。在整个过程中,涉及到多个队列,一系列的参数设定,其中任一部分的波动都可能导致终端表现出网络性能的抖动。
2 网络性能监控
网络性能监控是网络性能测试的重要部分,也是定位网络性能问题的重要手段。监控结果能相对直观地显示出网络系统的运行状态,帮助我们分析和解决性能问题。在网络性能监控中,最常用的监控方式有两类:网卡性能监控和协议栈监控。
2.1 网卡性能监控
网卡性能监控是网络性能测试中最重要的监控方式之一,网卡承载了所有的网络流量,很多关键性能参数都能从网卡性能监控中获得。网卡性能监控工具有很多,其中以sar较为常用。
2.1.1 网卡性能监控工具 - sar
sar 全称为System Activity Report,是Unix/Linux 下流行的系统资源监控命令,Linux 下如果没有该命令,需要安装 sysstat 包。
sar -n 可以根据关键字以不同的角度报告实时的网络流量变化,其中DEV和ETCP关键字最为常用。
DEV关键字以设备为单位提供网络统计报告,方便快速观察各网卡性能:
IFACE:设备名;
rxpck/s:每秒钟接收的数据包;
txpck/s:每秒钟发送的数据包;
rxbyt/s:每秒钟接收的字节数;
txbyt/s:每秒钟发送的字节数;
rxcmp/s:每秒钟接收的压缩数据包;
txcmp/s:每秒钟发送的压缩数据包;
rxmcst/s:每秒钟接收的多播数据包。
ETCP关键字报告TCP层的错误统计,包括重试、断连、重传、错误、RST包等:
atmptf/s:每秒重试失败数;
estres/s:每秒断开连接数;
retrans/s:每秒重传数;
isegerr/s:每秒错误数;
orst