杨建旭
作者杨建旭4天前
技术经理, 中国人民银行清算总中心

如何提高性能测试效率之被测环境检查

字数 2811阅读 3239评论 2赞 2

性能测试中,经常发现测试结果和预期差异很大,根据个人经验,大约50%的情况下是测试环境并没有校准到生产配置,甚至生产环境也是配置错误,导致系统性能的低下。因此,被测环境的检查是非常值得投入的一件事。前期花3个小时做检查,后期减少几天的排查和扯皮,划算!

环境的检查包含:
 硬件资源配置检查
 操作系统检查
 系统软件检查
 应用配置检查
 系统资源情况检查
 业务检查

这里分别简单介绍一下,各个检查环节主要检查什么,为什么他们影响性能。

一、 硬件资源配置检查

目的是了解清楚测试环境硬件配置和生产环境的差异,如果是虚拟化环境,需清楚的了解底层Hypervisor给操作系统提供的实际资源能力是多少。而不是虚出来的那个能力。

CPU:Power平台上检查EC(标称计算能力)、VP(虚拟CPU个数)、SMP等参数。X86上检查保障的Hz值。

内存资源配置:X86上格外检查保障的内存值,该值是Hypervisor一层设置。

检查磁盘空间:预估数据量,关注磁盘空间是否满足测试数据量的要求。需要关注每个文件系统,df命令查看所有挂载的文件系统,关注增长量较大的文件系统(如:用于写日志的文件系统)是否满足测试需要。关注数据库的表空间是否支撑目标业务量。

二、 操作系统检查

1) 检查操作系统版本和补丁版本

操作系统版本不同,性能自然会有差异。并且需要关注操作系统的小版本,以及打补丁的情况。小版本一般很少有人在意,因为影响较小。但在常年的性能测试中,偶尔也会遇到操作系统、系统软件的bug,有时还是自己帮厂商发现的。

2) 操作系统参数

一些需要注意的系统参数。
如果这次测试关注网络情况,那么操作系统上网络相关的参数是不是就需要额外校准一下?网络相关的maxmbuf,MTU,rfc1323,tcp_nodelay,tcp_recvspace,tcp_sendspace等等。

如果这次测试关注CPU利用率,那么操作系统上CPU相关的参数是不是就需要额外校准一下?例如关注微分区环境下的vpm_xvcpus、处理器折叠(Processor Folding)等等。

三、 系统软件检查

系统软件包括交易中间件、应用中间件、消息中间件、数据库、BI等等,也就是说,不是自己写的应用,而是一些通用的软件产品。检查他们的版本、运行状态和各类参数配置。

之所以检查他们,是因为他们是系统性能体系的一部分,他们承载了应用程序。“系统软件配置不得当”占所有“环境配置不得当”至少30%,这其中数据库的参数配置对性能的影响最大,需要检查的点也最多,后续我还会专门介绍数据库的性能测试检查。

四、 应用配置检查

版本和各类参数,尤其是并发进程数、日志级别、检查级别、开关。
确保测试环境的应用配置与生产一致,或者其配置是符合测试环境特点的。

并发进程数:测试环境和生产环境的CPU资源不一样,那么测试环境的并发进程数可能不需要设置那么高,太高了反而影响系统性能(尤其是涉及到数据库资源争用的情况)。

日志级别:是应用程序最影响性能的参数之一。较高的日志级别对处理效率是上一个数量级的影响。

检查级别:有些应用程序设置检查级别。即应用自身判断、检查业务正确性的设置。检查级别高,则检查的项目越多、越严格。较高的检查级别对处理效率也是上一个数量级的影响。

五、 系统资源情况检查

这里的系统资源检查和最上面介绍的系统资源配置检查并不相同。资源配置检查是静态地看总量,而这里的系统资源利用情况检查指的是,测试之前关注CPU、网络等资源使用情况,确保没有其他占用资源的业务在运行。否则,测试结果不准确。

1)CPU利用率的检查

操作系统在没有大作业工作时,CPU的user和kern一般在1%左右,而idle空闲一般在97%、98%左右。如果CPU利用率明显偏大,需等这个作业完成后才能进行性能测试,如果等不到结束,kill也是一个选择。

2)网络相关检查

检查网络的响应时间是否可以支撑性能测试的业务量

网络响应时间是指终端发起到源端的连接请求,到收到源端的回复所需要的时间。可用ping命令来测试网络的响应时间,Ping 命令的echo request/reply 一次往返所花费的时间即为响应时间。

有很多因素会影响到响应时间,如网络负荷,网络主机的负荷,网络的带宽,网络设备的负荷等等。

若是过程中出现大延迟的数据包,甚至偶尔的丢包现象,则说明该网络抖动程度较大,网络性能不佳。

如果存在网络抖动,同样会影响系统性能。例如:

ping xxx.xxx –t  
Ping xxx.xxx with 32 bytes of data 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=1ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=47ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=1ms TTL=50 
Reply from 123.125.114.144: bytes=32 time=0ms TTL=50

局域网中,绝大多数延时都是0-1毫秒,而中间总是掺杂着几十毫秒(47ms)的抖动。这类网络情况在高吞吐量的性能测试当中,会严重影响业务的响应时间(如果一个业务的链条比较长的话)。因为,对于最求性能极致的系统,响应时间都是以毫秒计算的,一个业务才几十毫秒,如果10个tcp网络报文中有一个遇到几十毫秒(47ms)的抖动,就会明显拉长了业务的响应时间。

六、 业务检查

业务检查包括业务的类型、系统日期、所处的状态、业务是否会重账。
业务检查的目的是确保每一次的测试都可以业务处理正常,而不至于出现因为业务报错而测试作废的情况。

以上,是被测环境的检查,磨刀不误砍柴工,大概就是这个意思。

微信公众号:性能测试与调优

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2
{}

添加新评论2 条评论

#杨建旭技术经理, 中国人民银行清算总中心
4天前
网络资源一般不算是硬件,一般我们说“硬件和网络”。
#cllin_kiki测试工程师, 保密
4天前
网络归属于系统资源类?不应该也是硬件资源的吗?
Ctrl+Enter 发表

本文隶属于专栏

系统性能测试
49 文章

关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
© 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30