zoukankan      html  css  js  c++  java
  • 性能测试基础---监控

    ·函数中的参数的分隔符是逗号,因此LR在解析的时候,会将变量的值解析为多个参数,从而导致报错。如果在函数中使用自定义的变量,变量的值是不能包含逗号的。


    ·性能监控:
    ·监控是性能测试中非常重要的一个环节,只有通过监控我们才能知道被测系统的性能的好坏,通过分析性能测试和监控的一些数据,我们可以分析定位到性能瓶颈,从而进行性能调优。

    ·对于监控来说,大家需要掌握的原则如下:
    ·监控是会对被测系统的性能造成影响的。所以一般来说我们都建议直接在被测服务器上进行监控,而不是通过远程的集成监控方式。

    ·监控并不是越多越好,而是根据实际情况,逐步加大监控力度。

    ·监控是分层的,通常我们监控的层面有:
    ·系统级别的:CPU、内存、网络、磁盘IO等。
    ·服务器级别的。
    ·中间件。
    ·数据库级别。

    ·监控的工具的选择。
    一般来说,建议使用系统、服务器、数据库自带的监控工具来做,其次建议使用专业的第三方检测工具,最后才建议使用性能测试工具or平台提供的集成监控方式。


    ·系统级别的监控:
    常见的操作系统有两种:windows、linux。
    两种系统虽然底层的工作机制有所差异,但是对于常见的性能指标来说,差异并不是很大。

    ·windows平台:对于windows来说,建议使用windows自带的性能监控工具perfmon进行监控。
    PS:LR的集成监控,就是通过RPC来调用perfmon的接口来实现的。

    ·perfmon的使用:
    一般我们都是通过新建数据收集器集来进行监控的。
    ·性能计数器:就是perfmon提供的监控指标(windows提供)。
    常见的指标有:

    ·CPU:cpu是系统的处理器,CPU的指标会直观的反映被测系统的忙碌程度。
    常见的有:
    ·%Processor time(Processor对象):cpu的使用率,该指标直观的反映了被测系统的忙碌程度。通常来说,该指标只要不长时间的超过80%,即没有问题。
    PS:CPU使用率高,也有可能并不是当前服务器有问题,而有可能是数据库or其它组件有问题。
    在linux下,包括某些windows的版本下,该指标是可能超过100%的,因为有些系统对于不同的CPU处理器是分开统计,最后汇总求和的。

    ·%User time:是指CPU忙于用户进程所耗费的时间。通常该指标用来结合%Processor time指标,来判断到底是操作系统本身有问题,还是用户进程(服务)有问题。
    一般来说,%User time和%Processor time的差值越大,说明系统本身消耗的资源越多,系统本身存在问题的可能性越大。

    ·Processor queue length(System对象):CPU的请求队列长度。一般来说,该值建议不要长时间超过处理器个数的两倍。

    ·内存(memory):
    对于系统来说,内存一般分为两种:物理内存和虚拟内存。
    所谓虚拟内存,其实就是系统从磁盘中所划分的一块区间,本质上还是磁盘。
    系统对于内存的使用规则是:优先使用物理内存,虚拟内存只是用来做腾挪使用的。物理内存的速度大概是虚拟内存(磁盘)的60倍以上。
    对于虚拟内存的设置来说,不是越大越好,一般建议是物理内存最大值的两倍即可。
    从性能的角度来说,物理内存越大越好,系统不使用虚拟内存是最好的。

    所有内存的监控都是在Memory对象下完成:
    ·Available MBytes:系统可用内存数,是指系统当前可用的物理内存数量。一般来说,该值越大越好,最小不能小于物理内存最大值的5%。

    ·%Commited Bytes in Use:是指正在提交使用的虚拟内存数量占比。该值越小越好。

    ·Pages/sec:每秒钟的页面交换数,该值越大,意味着系统对于虚拟内存的读写越频繁,产生错误、性能瓶颈的可能性就越大。


    PS:对于内存来说,其实实际测试过程中,所有的监控最终的目的都是要判断系统是否存在内存泄漏问题,如果没有,内存不足只需要添加内存即可。

    对于内存泄漏来说,我们一般都是通过对应用服务器做dump(镜像)的方式来进行。
    dump一般来说需要做三次,然后进行对比:
    ·性能测试之前
    ·性能测试中
    ·性能测试结束


    ·磁盘IO:磁盘的监控,很多时候是对应应用本身的。
    磁盘(物理)本身的性能一般都是通过第三方工具(HD Tune)进行检测。
    磁盘的监控指标都是位于Physical Disk对象下,磁盘的指标一般来说都是一式三份:write、read、transfer。transfer就是write和read的和值。
    ·%Disk time:磁盘使用率,是指磁盘处理器忙于磁盘读写任务所占时间的比例。一般来说,该值越小越好。因为windows下该指标是按磁盘处理器分开统计,最后汇总求和的。因此该值可能超过100%。

    ·Disk Bytes/sec:每秒钟磁盘处理的字节数量(包括读写),该指标有两个参考点:
    ·该指标的值和实际业务的吞吐量要能匹配。
    ·该指标的值不能等于or接近磁盘的物理读写性能的。

    ·Avg. Disk sec/Transfer:磁盘每次操作的平均消耗时间。该值的单位虽然是秒(second),但是实际上因为4kb读写的机制,通常该指标的值要求在5ms以内,超过30ms,则意味着磁盘本身出现瓶颈。

    ·Avg.Disk queue length:磁盘队列长度,一般来说,建议磁盘队列长度不要超过磁盘逻辑处理器(分区)数量的两倍。


    ·linux平台:一般来说,常用的方式有两种:
    ·linux自带or第三方的一些监控命令来实现。
    常用的命令:
    top
    ps
    netstat
    iostat
    vmstat
    dstat
    free

    ·IBM出品的监控工具nmon进行监控。推荐使用。
    注意事项:
    ·官网提供的是一个压缩包的下载,我们需要解压,然后根据linux 内核实际类型去选择对应的nmon版本。
    一般来说,在被监控的服务器上,运行命令:uname -sr可以看到linux系统内核的名称和版本。然后选择上传对应版本的nmon到服务器即可。

    ·一般来说,要给nmon文件赋权。
    chmod 755 nmon文件。
    nmon命令一般使用以下参数即可:
    -f 在当前目录生成默认的监控文件(*.nmon)
    -s 指定监控采集的频率,即每隔N秒采集一次性能数据。
    -c 指定监控采集的次数。
    PS:一般来说,使用nmon监控的时长=s*c。

    示例:
    ./nmon文件名 -f -s5 -c12
    表示使用nmon监控,每隔5s采集一次数据,采集12次数据。


    PS:不论是windows下的perfmon还是linux下的nmon,甚至包括别的监控工具,都有一个重要的指标--采样频率需要设置。
    一般来说,采样频率建议是3-5s为宜。


    ·服务器的监控:
    一般来说,所有的服务器产品都提供了内置的监控组件(模块)。
    有些是直接有的,有些是需要安装的,有些是需要配置的。


    ·像J2EE服务器,应用都是运行在java之上的,此时我们可以根据需要对jvm相关的参数进行监控。
    java提供了大量的监控命令来帮助我们实现监控。
    建议大家使用jvisualvm。

  • 相关阅读:
    jquery的data、attr、expando
    Vue-router导航问题
    函数声明与函数表达式
    Object.defineProperty方法
    移动端Web开发,ios下 input为圆角
    parseInt和map方法使用案例分析
    字符串处理常见函数
    ES6之Promise的基本用法
    浮动相关
    知识点拾遗
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/11724737.html
Copyright © 2011-2022 走看看