Jmeter使用总结
Jmeter
Jmeter配置文件properties
修改为language=zh_CN默认展示中文
修改jmeter.save.saveservice.output_format=csv输出测试报告文件格式为csv
设置不填写content_type时默认添加post_add_content_type_if_missing=true
配置远程主机:remote_hosts=127.0.0.1
test plan(测试计划)
ctrl+r运行测试计划,分布式压测时,master机不会显示所有远程的salve机的线程数
命令行默认停止脚本运行,stoptest.cmd/stoptest.sh
线程组
stepping thread group
- this group will start:总共启动的线程数
- firs,wait for:运行之后多长时间开始启动线程,若设置为0,则立即启动线程
- then start:初次启动多少个线程,若设置为0,表示初次不启动线程
- next add:之后每次启动多少线程,若设置为10个,则每次阶梯启动10个线程
- threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间,若设置为30秒,每梯次启动完线程之后再运行30秒
- using ramp-up:启动线程时间,若设置为5秒,标识每次启动线程都持续5秒
- then hold load for:线程全部启动后运行多长时间
- finally,stop/threads every:多长时间十方多少个线程
concurrency thread group
-
target concurrency:目标并发(线程数)
-
ramp up time:启动时间,若设置1min,则目标线程在1min内全部启动
-
ram-up stesps count:阶梯次数,若设置6,则目标线程在1min总分六次阶梯加压(启动线程数=目标线程数/阶梯次数=60/6=10每10s启动6个线程)
-
hold target rate time:持续负载运行时间,若设置2,则启动完所有线程后,持续运行2min
-
time unit
- 时间单位(分/秒)
-
thread iterations limit:线程迭代循环次数,默认为空,即是永远。如果运行线程达到ramp-up time+hold target rate time,则停止运行线程(不建议设置该值)
线程组下不同组件执行顺序
- 配置元件/监听器
- 前置处理器
- 定时器
- 逻辑控制器
- 取样器
- 后置处理器
- 断言
逻辑控制器
sampler(取样器)
- 作用:让jmeter发送请求到服务器
Logical controllers(逻辑控制器)
- 控制取样器的执行条件
监听器
jmeter运行时,收集运行数据
所有监听器拿到的数据相同,不同的数据显示的方式
定时器
按顺序执行各个取样器不会中途暂停
用户定义的变量
测试计划
- 测试计划本身用户定义的变量
- 添加配置元件用户定义的变量
线程组
- 添加配置元件用户定义的变量
取样器
- 添加配置元件用户定义的变量
注意:用户自定义变量在测试计划运行后,是全局生效,并且只生成一次。如果想要每次自定义变量动态生成,建议使用前置处理器>用户参数
用户参数
测试计划
- 前置处理器>用户参数
线程组
- 前置处理器>用户参数
取样器
- 前置处理器>用户参数
每发送一次请求都会调用用户参数,它的值是动态的,全局生效
监听器
服务器监听器
- 通过官网下载JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,放置于Jmeter的/lib/ext目录下
- 通过PerfMon Metrics Collector监听器进行服务器性能数据显示,IP填写需要监控的服务器IP,本机填127.0.0.1即可
- ServerAgent-2.2.3.zip放置服务器任意位置解压,启动./startAgent.sh脚本
nmon
-
wget http://sourceforge.net/projects/nmon/files/nmon16e_mpginc.tar.gz解压后运行./nmon_x86_64_centos8
-
查看nmon监控
- 采集.nmon文件,例如:./nmon -f -t -s 10 -c 6 -m /data/nmon f:监控结果以文件方式输出 F:和f相同作用,要指定输出文件名 s:采样频率/s c:采样次数 m:nmon文件保存的路径 T:显示资源占用率高的进程
- 官方下载nmon_analyser分析数据工具,打开.nmon文件查看监控结果数据
逻辑控制器
loopcontrol循环控制器
- 循环次数,若填5,线程数=5,则总请求5*5=25
forEach控制器
- 一般和用户自定义变量/JDBC结果变量一起使用,用于读取遍历相关的返回值
runtime控制器
- 运行时间=循环次数*runtime时间(秒)
吞吐量控制器
- 控制子项的执行频率,设置几次就执行几次,或者按百分比执行