思路:以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的值 具体设置如下
正则表达式详解
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)
其他地方引用时的变量名称,名称只能是一个,引用方法:${变量名称}
数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容
具体语法如下:
提到正则表达式,必须要说一下匹配的两种模式:贪婪和非贪婪
贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配
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 处在空闲状态时间百分比
原文:https://www.cnblogs.com/dcszhangsir/p/13405486.html