Jmeter性能测试之阶梯式场景(负载测试)、波浪式场景(压力测试)
一、阶梯式场景(负载测试)
该场景主要应用在负载测试里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。
使用到的线程为:jp@gc - Stepping Thread Group (deprecated)
在测试计划上:右键—>添加—>线程(用户)—>jp@gc - Stepping Thread Group (deprecated)
同时添加以下监视器:
- TPS:jp@gc - Transactions per Second
- 响应时间:jp@gc - Response Times Over Time
- 活跃线程数:jp@gc - Active Threads Over Time
针对阶梯式场景的参数配置,说明如下:
- This group will start:给定的当前负载的并发用户数
- First, wait for:等待XX秒后开始启动
- Then start:0秒(初始化)启动XX并发用户数 — 在第几个虚拟用户启动
- Next, add:每using ramp-up时间内启动XX的用户数
- threads every:每次加压阶梯下用户完成启动后保持运行XX秒
- using ramp-up:XX秒内完成Next, add的用户数的启动
注:五秒钟启动十个线程,这十个线程持续运行30秒,再用五秒钟启动十个线程,这20个线程持续运行30秒
- Then hold load for:This group will start并发用户数全部启动完成后保持运行XX秒 == 所有线程运行完成后再执行XX秒
- Finally, stop:每隔threads every的时间减少XX用户数
- threads every:每隔XX秒减少Finally, stop的用户数
注:每隔1秒减少5个并发用户数直到并发用户数减少为0
我们以注册接口为例,配置如下参数:
配置参数的完整描述为:给定负载并发用户数为25,从0秒开始,每3秒内增加5个并发用户数,3秒时刻完成5个并发用户数的启动后开始平稳运行10秒钟,依次下去,直到25个并发用户数全部都启动完成后,平稳运行30秒,然后每隔1秒减少5个并发用户数直到并发用户数减少为0时,负载测试结束。
开始进行负载测试,等待测试完成后,可以通过添加的jpgc监视器图表查看性能测试报告结果
二、波浪式场景(压力测试)
该场景主要用在分段时间压测和压力测试里面,分段时间压测比如点餐系统,一天会出现用餐高峰期、平稳期和闲时区,针对该场景我们就要设计成不同时间段的压力值不同,加压方式不同等等,压力测试我们只需要使用一个场景,并将压测时间设置长即可,同样的测试报告也用jpgc的监视器获得
使用到的线程为:jp@gc - UItimate Thread Group
在测试计划上:右键—>添加—>线程(用户)—>jp@gc - UItimate Thread Group
针对波浪式场景的参数配置,说明如下:
- Start Threads Count:给定当前时间段的并发用户数
- Initial Delay, sec:初始化时间,单位:秒(s)
- Startup Time, sec:启动时间,单位:秒(s)
- Hold Load For, sec:所有并发用户数启动完成后保持运行的时长,单位:秒(s)
- Shutdown Time:结束时间,单位:秒(s)
分段时间压测(示例):
理解:从 0秒 开始,30秒 启动 50个 虚拟用户,运行 60秒 后,10秒 停止50个虚拟用户 == 第一阶段耗时100秒
从100秒 开始,15秒 启动 200个 虚拟用户,运行 120秒 后,10秒 停止 200个 虚拟用户 == 前两个阶段总耗时 245 秒
从 245秒 开始,30秒 启动 50个 虚拟用户,运行 60秒 后,20秒 停止 100个 虚拟用户 == 前三个阶段总耗时 385秒
。。。。。。
压力测试(示例):
理解:从 0秒 开始,60秒 启动 300个 虚拟用户,运行 500秒 后,10秒 停止300个虚拟用户 == 段耗时 570秒
三、服务器监控
服务器监控插件:jp@gc - PerfMon Metrics Collector,需要在服务器安装:ServerAgent
-
- 服务器资源监控线形图
- 用于监控机器的CPU、Memory、swap、Disks I/O、Networks I/O。CPU:cpu占用量百分比;
- 服务器性能监测控件,包括CPU,Memory,Network,I/O等等(此功能用到在需监听的服务器上启动startAgent)
- 根据需要选择CPU,Memory,Network I/O等
1、下载并安装ServerAgent
2、通过ftp/sftp方式把包上传到服务器上,解压
- 上传 压缩包到服务器 建议公司环境安装目录下或opt目录下
- 解压命令:unzpi ServerAgent-2.2.3.zip
- 进入解压后的文件:cd ServerAgent-2.2.3/
- 查看所有文件:ll
- starAgent.sh 是启动文件
3、更改端口并启动服务:
Linux 下启动:.startAgent.sh 回车就可以启动,默认的端口是4444
在阿里云的服务器上面4444端口可能冲突后会被禁用,防止禁用后会出现各种问题
更改并启动服务执行: sh startagent.sh --udp-port 0 - -tcp-port 3231
(建议使用该方式,去掉udp、tcp改变端口, 默认4444,可能冲突或禁用)
- udp和tcp都是http协议中使用的数据传输协议 其中 udp 的意思是传输的速度越快越好,不保证数据的准确定
- tcp 需要先建立双方的链接,数据稳定不会出错,传输的速度没有udp快
加上&后台运行:sh startagent.sh --udp-port 0 -tcp-port 3231&
停止服务:Ctrl + C
4、启动服务后去检查防火墙是否关闭
1、服务器\防火墙是关闭状态那就没有问题
- 1、启动防火墙:systemctl start firewalld
- 2、关闭防火墙:systemctl stop firewalld
- 3、检查防火墙状态:systemctl status firewalld
2、如果没有关闭防火墙,那么就需要关闭或执行下面的命令把端口添加到防火墙内
- 防火墙添加开放端口:
- 命令:firewall-cmd --permanent -add-port=3123/tcp
- 不用在意此条内容:再firewall-cmd --reload (删除firewall-cmd-permanent --remove-port=3243/tep)
安装完毕
5、运行脚本:
启动后会出现如下图:服务器资源监控的图表
可能出现的问题:
1.启动文件,并指定端口号(随意):
- ./ startAgent.sh --udp-port 0 --tcp-port 3128
- 意思是:不启用 udp 服务,只启动 tcp 服务
2.可能出现网络不通
检测到服务器 端口网络不通
telnet 服务器地址.3129
1、网络不通第一种解决办法
先停止服务:Ctrl + C
检查3128端口:lsof -1:3128
输入命令回车后什么都没有提示
需要查看防火墙:systemctl status fi rewalld
2、网络不通第二种方法
- 关闭防火墙,重新指定端口
- systemctl stop firewalld
- systemctl status firewalld
- ./ startAgent.sh - -udp-port 0 --tcp-port 3129
检测端口网络是否通畅
telnet 148. 70. 249.98 3129