首页 > 其他 > 详细

jmeter性能测试以及数据监控

时间:2020-07-30 21:02:35      阅读:203      评论:0      收藏:0      [点我收藏+]

思路:以cms登录接口为例,使用随机函数添加不同的可登录用户,然后用正则表达式获取到可登录的用户名,在把可登录的用户进行登录,形成循环 实现不同的用户登录,进行并发

一.使用jmeter测试添加用户,查询用户,登录三个接口的性能

  1.打开jmeter,创建线程组  调通添加用户的接口   

    协议:http

    服务器名称或ip:192.168.195.130(部署cms的本地ip)

    端口号:8080

    方法:post 

    添加用户的接口路径:/cms/manage/saveSysUser.do

    content encoding:utf-8

    在jmeter的选项中选择函数助手对话框  选择 __RandomString函数   进行如下设置  目的是为了生成随机用户

    技术分享图片

 

 

      设置好后parameters传入userAccount=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)} 即可

    或者

    body Data:传入  userName=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)}&userSex=1&userMobile=18314933160&userEmail=369608314%40qq.com&userAccount=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)}&loginPwd=154236&confirmPwd=154236

    添加HTTP信息头管理   传入Cookie 与Content-Type

    技术分享图片

 

 

 

    添加察看结果树

    添加Summary Report

    线程组设置10个    循环1次

    运行结果如下

    技术分享图片

 

 

        

    Summary Report结果如下

    技术分享图片

 

 

     Label:取样器别名
    #Samples:取样器运行次数
    Average:请求(事物)的平均响应时间
    Min:请求最小响应时间
    Max:请求最大响应时间
    Std.Dev:响应时间标准差,标准差越小越好
    Error%:事物错误率
    Throughput:吞吐率,即TPS
    Received KB/s:每秒数据包流量
    Sent KB/s:
    Avg.Bytes:平均数据流量

  2.查询用户接口 

    协议:http

    服务器名称或ip:192.168.195.130(部署cms的本地ip)

    端口号:8080

    方法:post 

    查询用户的接口路径:/cms/manage/queryUserList.do

    content encoding:utf-8

    添加HTTP信息头管理   传入Cookie 与Content-Type

    查询接口不需要传参数默认查询第1页 10条用户信息

    技术分享图片

 

 

     技术分享图片

 

 

    添加正则表达式获取查询到的userAccount的值 具体设置如下

    技术分享图片

 

    正则表达式详解  

    apply to:

    Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
    Main sample only:仅作用于父节点取样器
    Sub-samples only:仅作用于子节点取样器
    JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

    要检查的响应字段:样本数据源

    主体: 接口响应主体内容,默认选择此项
    信息头:响应头的所有内容
    Request Headers:请求头的所有内容
    url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数
    响应代码:http响应代码,如101,200,302,404,501等
    响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)

    引用名称:

    其他地方引用时的变量名称,名称只能是一个,引用方法:${变量名称}

    正则表达式:

    数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容

    具体语法如下:

    技术分享图片

     提到正则表达式,必须要说一下匹配的两种模式:贪婪和非贪婪
    贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配

    模板:

    对应正则表达式提取器类型,样式为:
    $n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,
    若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容
    若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容
    若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来

 

    匹配数字:

    正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
    当为 0 时,随机返回匹配的数据。
    当为 1 时,表示返回匹配结果数组的第一个元素
    当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量
    在引用时:通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容

 

    缺省值:

    匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。

 

    3.登录接口

    

    协议:http

    服务器名称或ip:192.168.195.130(部署cms的本地ip)

    端口号:8080

    方法:post 

    添加用户的接口路径:/cms/manage/loginJump.do

    content encoding:utf-8

    添加HTTP信息头管理   传入Cookie 与Content-Type

    设置好后parameters传入userAccount=${userAccount} (引用正则表达式名称)

               loginPwd=123456

    技术分享图片

 

 

     后置处理器添加Debug PostProcessor查看正则表达式提取的具体值

    技术分享图片

 

 

二.设置持续并发监控服务器资源

1.添加用户 查询用户 登录 三个接口调通后线程组设置为10个 循环1次 勾选调度器 设置持续时间60s 设置响应断言  察看结果树与Summary Report移动到http请求之外 一起监控 开始执行 具体如下

 技术分享图片

 

 10个并发 压三个接口  持续一分钟  导致自己电脑超频了

  

   

 

 

2.进入到部署cms的服务器当中 使用yum -y install dstat命令 在线安装dstat性能工具

 使用dstat -c -m -n -d -r -l      监控cpu 内存 网络  磁盘 io 系统负载情况

 

技术分享图片

 

 

下面对显示出来的部分信息作一些说明: 

cpu:hiq、siq 分别为硬中断和软中断次数。

system:int、csw 分别为系统的中断次数(interrupt)和上下文切换(context switch)。 

其他的都很好理解。

语法 

dstat [-afv] [options..] [delay [count]]

常用选项 

-c:显示 CPU 系统占用,用户占用,空闲,等待,中断,软件中断等信息。 

-C:当有多个 CPU 时候,此参数可按需分别显示 cpu 状态,例:-C 0,1 是显示 cpu0 和 cpu1 的信息。 

-d:显示磁盘读写数据大小。

-D hda,total:include hda and total。

-n:显示网络状态。 

-N eth1,total:有多块网卡时,指定要显示的网卡。 

-l:显示系统负载情况。 

-m:显示内存使用情况。 

-g:显示页面使用情况。 

-p:显示进程状态。 

-s:显示交换分区使用情况。 

-S:类似 D/N。 

-r:I/O 请求情况。 

-y:系统状态。 

--ipc:显示 ipc 消息队列,信号等信息。 

--socket:用来显示 tcp udp 端口状态。 

-a:此为默认选项,等同于 - cdngy。 

-v:等同于 -pmgdsc -D total。 

--output 文件:此选项也比较有用,可以把状态信息以 csv 的格式重定向到指定的文件中,以便日后查看。

例:dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到 / root/dstat.csv 文件中。

当然 dstat 还有很多更高级的用法,常用的基本这些选项,更高级的用法可以结合 man 文档。

监测界面各参数含义 (部分) 

Procs

r: 运行的和等待 (CPU 时间片) 运行的进程数,这个值也可以判断是否需要增加 CPU(长期大于 1)

b: 处于不可中断状态的进程数,常见的情况是由 IO 引起的

Memory

swpd: 切换到交换内存上的内存 (默认以 KB 为单位)。如果 swpd 的值不为 0,或者还比较大,比如超过 100M 了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。

free: 空闲的物理内存

buff: 作为 buffer cache 的内存,对块设备的读写进行缓冲

cache: 作为 page cache 的内存, 文件系统的 cache。如果 cache 的值大的时候,说明 cache 住的文件数多,如果频繁访问到的文件都能被 cache 住,那么磁盘的读 IO bi 会非常小。

Swap

si: 交换内存使用,由磁盘调入内存

so: 交换内存使用,由内存调入磁盘

内存够用的时候,这 2 个值都是 0,如果这 2 个值长期大于 0 时,系统性能会受到影响。磁盘 IO 和 CPU 资源都会被消耗。

我发现有些朋友看到空闲内存 (free) 很少或接近于 0 时,就认为内存不够用了,实际上不能光看这一点的,还要结合 si,so,如果 free 很少,但是 si,so 也很少 (大多时候是 0),那么不用担心,系统性能这时不会受到影响的。

磁盘 IO

bi: 从块设备读入的数据总量 (读磁盘) (KB/s)

bo: 写入到块设备的数据总理 (写磁盘) (KB/s)

注: 随机磁盘读写的时候,这 2 个 值越大(如超出 1M),能看到 CPU 在 IO 等待的值也会越大

System

in: 每秒产生的中断次数

cs: 每秒产生的上下文切换次数

上面这 2 个值越大,会看到由内核消耗的 CPU 时间会越多

Cpu

usr: 用户进程消耗的 CPU 时间百分比

us 的值比较高时,说明用户进程消耗的 CPU 时间多,但是如果长期超过 50% 的使用,那么我们就该考虑优化程序算法或者进行加速了 (比如 PHP/Perl)

sys: 内核进程消耗的 CPU 时间百分比

sys 的值高时,说明系统内核消耗的 CPU 资源多,这并不是良性的表现,我们应该检查原因。

wai: IO 等待消耗的 CPU 时间百分比

wa 的值高时,说明 IO 等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈 (块操作)。

idl: CPU 处在空闲状态时间百分比

 

jmeter性能测试以及数据监控

原文:https://www.cnblogs.com/dcszhangsir/p/13405486.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!