JMeter命令模式下动态设置线程组和持续时间等动态传参

简介: 背景: 1.当通过JMeter的图像化界面运行性能压测或者场景时候,JMeter界面很容易导致界面卡死或者无响应的情况(20个线程数就会卡死) 现象如下:   解决方案: jmeter -n -t D:\apache-jmeter-3.

背景:

1.当通过JMeter的图像化界面运行性能压测或者场景时候,JMeter界面很容易导致界面卡死或者无响应的情况(20个线程数就会卡死)

现象如下:

 

解决方案:

jmeter -n -t D:\apache-jmeter-3.0\bin\log.jmx -l D:\apache-jmeter-3.0\bin\log.jtl

此时线程数设置大一点,也不会卡死

 

2.当调试脚本或者运行场景时候,需要不断的调整线程数或者持续运行时间时候,需要先打开GUI界面,修改如下参数并保存

解决方案:

 

1.指定运行多少线程

我们知道JMeter测试计划在运行Sampler之前先加载运行属性(jmeter.properties,system.properties等),那么我们可以借助属性来完成。

当然了,我们也不会傻到去修改这些配置文件,这多麻烦。JMeter提供了方法可以动态修改属性,在命令行使用 -J 来指定JMeter Properties

使用__P() 函数来获取命令中指定的属性值。

实例如下:

jmeter -JthreadNum=20 -Jtime=300 -n -t D:\apache-jmeter-3.0\bin\log.jmx -l D:\apache-jmeter-3.0\bin\log.jtl

jmeter.bat -JthreadCount=2 -Jcycle=2 -n -t log.jmx -l log.jtl

 threadNum=2为log.jmx测试计划要指定的线程数

-Jcycle=2为log.jmx测试计划要指定的每个线程的迭代次数

-Jtime=10为log.jmx测试计划要指定的持续运行时间

在log.jmx测试计划中用${__P(threadNum,)}来获取threadNum的值;${__P(cycle,)}来获取cycle的值,${__P(time,)}来获取time的值

运行效果如下:

 

拓展知识:

如果访问的目标地址变化了,端口也变化了,重新指定:

JMeter 命令行通过-D来指定System Properties,类似于Jdk中我们用-D来指定一些系统属性,比如开启JMX远程监控。

在JMeter脚本中我们用__property()函数来获取,比如-Durl=www.baidu.com在测试计划中用${__property(url,,)}来获取

运行命令如下:

jmeter.bat -JthreadCount=2 -Jcycle=2 -Durl=www.baidu.com -Dport=80 -n -t baidu.jmx -l baidu.jtl

 脚本如下:

如上使用-J -D在运行前动态设置属性,可以用来控制测试计划的执行,在非GUI方式运行时还是比较方便的。

自然性能测试自动化时我们可以利用这些命令行参数来动态指定属性,不用再修改脚本了。


img_42a4adae4716d0e15c3eeaabfd040044.png

注:转载需注明出处及作者。

流柯      

目录
相关文章
|
3月前
|
Java 测试技术 Linux
jmeter-分布式部署之负载机的设置
jmeter-分布式部署之负载机的设置
232 2
|
25天前
|
SQL druid Java
线程池相关故障问题之Druid数据库连接池中,为何需要设置TransactionTimeout
线程池相关故障问题之Druid数据库连接池中,为何需要设置TransactionTimeout
|
29天前
|
Java
Java演进问题之单个虚拟机的最大线程数量一般会设置到200至400条如何解决
Java演进问题之单个虚拟机的最大线程数量一般会设置到200至400条如何解决
|
2月前
|
Linux Windows
Jmeter设置中文语言和配置https
Jmeter设置中文语言和配置https
89 0
Jmeter设置中文语言和配置https
|
2月前
|
缓存 Java 测试技术
Java性能优化(八)-多线程调优-线程池大小设置
Java性能优化(八)-多线程调优-线程池大小设置
34 0
|
3月前
|
Java 调度
如何合理设置Java线程池大小
如何合理设置Java线程池大小
32 0
|
3月前
|
Dubbo 安全 Java
ThreadPoolExecutor线程池参数及其设置规则
ThreadPoolExecutor线程池参数及其设置规则
36 1
|
3月前
|
Linux API C++
【C++ 线程包裹类设计】跨平台C++线程包装类:属性设置与平台差异的全面探讨
【C++ 线程包裹类设计】跨平台C++线程包装类:属性设置与平台差异的全面探讨
87 2
|
3月前
|
Java
线程数设置
线程数设置
52 0
|
11月前
|
监控 Java 调度
设置动态线程池参数原理与实践
设置动态线程池参数原理与实践
144 0
设置动态线程池参数原理与实践