文章来源:网易易测(微信公众平台:et163yun)
在性能测试中,特别是测试云计算相关产品时,网络是影响性能的关键的因素之一,此文主要介绍网络性能如何监控以及常见网络性能问题如何定位。
首先介绍一下网络交互的过程中,数据包是怎么走的。从发送到被接收,经过的路径大致如下图1所示:
图1 网络交互中的数据包路径
以一次网络交互为例,一个数据包自发送端从上往下经由用户态空间的应用、系统内核空间到达网卡驱动,然后通过数据链路传输到达接收端,再从下往上经过网卡驱动、系统内核空间最终到达用户态空间的应用中等待被处理。在整个过程中,涉及到多个队列,一系列的参数设定,其中任一部分的波动都可能导致终端表现出网络性能的抖动。
网络性能监控是网络性能测试的重要部分,也是定位网络性能问题的重要手段。监控结果能相对直观地显示出网络系统的运行状态,帮助我们分析和解决性能问题。在网络性能监控中,最常用的监控方式有两类:网卡性能监控和协议栈监控。
网卡性能监控是网络性能测试中最重要的监控方式之一,网卡承载了所有的网络流量,很多关键性能参数都能从网卡性能监控中获得。网卡性能监控工具有很多,其中以sar较为常用。
1.1 网卡性能监控工具 - sarsar 全称为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:每秒重试失败数;