1.性能测试目的:
为什么要进行性能测试呢? 有些问题是只有在大并发或者压力测试下才会暴露出来的,在平常的公司内部测试中,感觉一切都是正常的,但是把服务放到生产线上,例如某个时刻突然有很多的用户要向我们的服务发送请求,这时候就考验到我们的服务是否会死锁,内存泄漏,能否在一个可接受的范围内响应,会不会crash,能否处理所有的请求(或者允许损失一定量的请求,比如1%内)等。为了不给用户糟糕的体验,所以我们需要在服务上生产线之前就要做好性能测试,但要做好性能测试,除了编写正确的性能脚本外,也需要分析很多因素的(主要有3大块:负载机、网络、被测系统)
2.性能测试工具的选择:
根据自己所测的服务器对外提供了什么协议类型的API来进行相应的选择,比如我所处的平台新服务器对外提供了HTTP协议的API和基于SessionManager的TCP协议的API。关于HTTP协议的压测工具倒是有很多的,大家自己百度下,但是关于能测TCP协议的压测工具,我知道的并且会使用的并不多,只知道可以用能支持socket协议的压测工具来实现
3.Loadrunner的使用
其主要有3个组件:Virtual User Generrator(用来编写虚拟用户脚本),Controller(用来设计场景),Analysis(用来分析运行数据,生成结果报告)
Analysis:
监控大致分为3类:
a.负载机的系统监控与被测系统监控(一般包括CPU使用率、内存、磁盘IO等)
b.服务器处理能力的指标监控(一般包括吞吐量、每秒事物数、各个事物的响应时间、每秒单击数等)
c.网络监控(根据经验,就是查看对比前后流量,ping服务器等)
名词解释:
CPU利用率(% Processor Time):指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个时间间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。可将其视为范例间隔用于做有用工作的百分比。根据应用系统情况,在80%±5%范围内波动为宜。过低,则服务器CPU利用率不高;过高,则CPU可能成为系统的处理瓶颈。
可用物理内存( Available MBytes ):当这个数值变小时,Windows开始频繁地调用磁盘页面文件。如果这个数值很小,例如小于5 MB,系统会将大部分时间消耗在操作页面文件上。一般要保留10%的可用内存。最低不能<4M,此值过小可能是内存不足或内存泄漏。
磁盘IO(% Disk Time):指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。若数值持续超过80 (此时处理器及网络连接并没有饱和),则可能是内存泄漏。
事务平均响应时间:( Average Transaciton Response Time ):随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。好<2s、良好2~5s、差6~10s
吞吐量( Throughput ):可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。
每秒点击次数( Hits per Second ):通过对查看“每秒点击次数”,可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。
相关名词解释:
1.分布式加压:什么是分布式加压呢? 分布式加压其实就是用另外一台负载机来帮助我们实现一定量的Vusers,那么我们就需要在另一台负载机上安装loadrunner11软件,然后在本地负载机的Controller的Load Generators里Add另一台负载机的Name(可以填写IP地址,比如192.168.6.173),然后点击connect按钮,查看status是否变为Ready状态,最后就可以在不同的虚拟用户组指定不同的负载机来帮助我们完成性能测试了
2.响应时间:响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间
3.吞吐量:指一段时间内服务器返回给客户端的数据量的大小,用于衡量被测系统的负载能力
4.吞吐率:吞吐率指单位时间内系统处理用户的请求数
5.TPS:指每秒系统能够处理事务的数量