[文章末尾给大家留下了大量的福利]
JMeter 执⾏原理
JMerer 通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组。
线程属性(线程数)
⼀个线程可以理解为对应模拟⼀个⽤户,所以线程数越多,那么也就认为可以模拟的⽤户数越多
调度器
设置何时开始运⾏
持续时间
测试计划持续多⻓时间
启动延迟
延迟多⻓时间开始运⾏测试,也就是说点击执⾏后,仅做初始化不会执⾏测试,等待延迟到达后开始运⾏测试,执⾏的时间为持续时间设置的时间
聚合报告
响应时间图
在测试计划中添加后端监听器
后端监听器是异步侦听器,可以将数据推入到数据库中,提供了InfluxDB,graphite两个选项(推荐使用InfluxDB)
在两个系统之间有许多相似点
1. 利用标签(tags/labels)有效地支持多维度量指标
2. 使用相同的压缩算法
3.都可扩展集成
4.允许使用第三方进行监控系统的扩展
添加监控服务器资源
Jmeter 安装监控服务器资源插件
添加性能监控接口(CPU,Memory 内存,Disks I/O 硬盘,Swap 网络)
服务器需要配置 startAgent 才可获取
在linux中启动 ./startAgent.sh,可能提示:“-bash: ./startAgent.sh: 权限不够”
那么需要执行命令:chmod +x startAgent.sh(增加权限)
生成测试报告
使用管理员权限打开命令提示符,进入 Jmeter 的tests(测试文件目录)
jmeter -n -t script/文件名.jmx -l 性能测试文件名.jtl -e -o 指定测试报告创建文件夹/(自动创建)
-n : 非GUI 模式执行JMeter
-t : 执行测试文件所在的位置及文件名
-r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
-l : 指定生成测试结果的保存文件, jtl 文件格式
-e : 测试结束后,生成测试报告
-o : 指定测试报告的存放位置(必须不存在)
例:jmeter -n -t script/TestDev.jmx -l testdev.jtl -e -o performanceReport/
在命令提示符中键入 jps 获取运行的 Java 程序 pid
在 jvisualvm 可查看对应程序的占用情况