zoukankan      html  css  js  c++  java
  • 性能测试基础---分析

    ·结果分析、定位瓶颈:

    ·在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的时间。

  • 相关阅读:
    三点定位
    vue中使用UEditor编辑器 -- 2
    网络编程——socket编程
    异常处理
    面向对象进阶
    初识面向对象,面向对象之继承、多态和封装
    Python常用的模块
    函数递归,匿名、内置行数,模块和包,开发规范
    闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式
    Python基础学习——文件操作、函数
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/11724746.html
Copyright © 2011-2022 走看看