性能测试基础---分析

·结果分析、定位瓶颈:

·在LR中,结果分析的组件是Analysis。

·Analysis组件能够打开的结果文件有两种类型:
·LR result files:即场景运行之后的原始结果文件。Analysis打开之后会生成对应的Analysis session file(处理后的结果)。


·一般来说,Analysis会默认生成一个概要报告和五张图表。

·概要报告:
·最小、最大、平均值:只具备统计学上的意义。但是并不能反应被测系统的性能的好坏。
·Std. Deviation:标准方差,反映的是整组数据的离散程度,反映的是平均值的可信度。
该值越大,则意味着数据的离散程度越高,平均值的可信度就越低。
该值越小越好,如果该值很大,通常我们需要对数据进行下一步分析。

·90 Percent:90%用户体验数据。这个百分比可以改。
这个数据是怎么统计的呢?代表什么意思呢?
将所有的样本数据从小到大排列,然后截取90%的位置的数据。
即90%的响应时间是小于等于该值,10%的响应时间是大于等于该值。


·图表:
图表相对于文字报告,优势在于:更加直观。
·通常来说,看图重在趋势,不重数据。
一般来说,在统计结果中,很少出现直线的情况。

·对于图表来说,依托于原始数据的,因此,在LR中,可以根据需要增加或者删除图表,并不会造成任何影响。

·对于图表来说,为了分析,我们往往需要综合分析多张图表的趋势,那么就需要对图表进行合并操作。
合并方式有三种。

·导入第三方的监测结果。

·Breakdown tree--web page Diagnostics:
是用来分析WEB/HTML模式下的脚本的前后端性能的。
·First Buffer:是指从请求发送开始,到接收到服务器响应的第一个字节信息的时间。

·receive:是指客户端接收服务器返回的响应内容所耗费的时间。通常来说,该指标客观的反应了客户端和服务器之间的网络状况的好坏。



·自定义报告:

·JVM的相关设置:
·JVM是指java虚拟机,一般来说,java应用我们都需要关注JVM参数的设置。
对于JVM来说,大家重点需要了解的JVM的内存相关的信息。
一般来说,在JVM中,内存分为两块:heap(堆区)和perm(栈区).
PS:从JDK1.8开始,perm区被取消,被metaspace(元空间).

一般来说,perm(metaspace)的大小都是相对固定的,系统运行起来是多少就是多少,不会发生太大的变化。

heap区:又分为年轻(Young)代和年老(old)代。
年轻代又分为Eden、S0和S1三个区间(默认)。

针对年轻代的GC(内存回收)叫young GC,又叫minor GC。
针对年老代的GC叫Old GC,又叫Full GC,也叫major GC。

JVM的内存使用基本流程如下:
new一个对象时,是放在Eden区,然后如果执行young GC,则JVM会对Eden中的内存进行检测,将还在使用的内存移入到交换区(s0,s1)(from,to),交换区内还存活的内存会进行交换。如果达到JVM设置的存活(交换)上限,则内存会被移入old区。

old GC,一般来说,空间不足时才会触发。


GC的策略,目前有以下:
·串行GC:单线程使用。
·并行GC:多线程使用。要求服务器是多核处理器。
·CMS GC:并发GC,一边分配一边GC。
好处在于最大程度的缩减stop the world的时间。

·STOP the world:因为传统的GC采用的都是标记-清理算法。
通常来说,一次标记-清理的内存越大,所消耗的时间就越多。

·G1 GC:算法做了改进。
设置了警戒线,如果达到警戒线就会触发GC,又做了隔离,清理GC不会影响到其它可用内存区间的使用,这就意味着,除非发生极端情况,stop the world的情况对于用户是无感的。


·其实整个JVM的内存设置、GC的设置,最终的目的:
·尽量减少FULL GC的频率。
·尽量减少STOP the world的时间。

原文地址:https://www.cnblogs.com/wendy-0901/p/11724746.html