如何在JMeter中同时运行多个jmx脚本

4

目前我们正在使用Performance Center进行负载测试,最终我们将转向JMeter。

在Performance Center中,我们同时运行了200个脚本。

同样的方式,如何在JMeter中同时运行多个jmx脚本?


你的意思是你运行了同一个脚本200次,还是同时运行了200个不同的脚本?JMeter两种方式都可以实现,请澄清一下。 - CharlieS
你好Charlie,1.200个不同的脚本 2.用户总数:451 3.测试持续时间为:2小时15分钟 4.为每个脚本分配单独的用户数量,例如:脚本1:8个用户;脚本2:4个用户;脚本3:1个用户等等...我该如何在JMeter中实现这个?谢谢, Raj - rpagadala
3个回答

5

使用非UI模式,您可以通过提供-t选项运行多个jmx脚本,例如:

Jmeter.bat or Jmeter.sh -n -t scritp1.jmx script2.jmx ... 

您可以使用Shell或批处理编程中的包装脚本创建多个会话,以便并行运行这些脚本。

例如:

Jmeter.bat or Jmeter.sh -n -t scritp1.jmx &
Jmeter.bat or Jmeter.sh -n -t scritp2.jmx &

嗨,Nachiket,你能否详细说明一下?我需要从命令提示符中运行吗?你能为我提供步骤吗?我已经将脚本存储在JMeter文件夹中的单独文件夹中,就像这样:C:\JMETER\J_Scripts谢谢, Raj - rpagadala
1
嗨Nachiket,我能够成功地从命令提示符中运行单个脚本。但是当我尝试运行多个脚本时,抛出以下错误C:\Users\XXXXX>C:\JMETER\apache-jmeter-2.11\bin\jmeter.bat -n -t PERF_SOA_CompanySetup_Indie.jmx PERF_SOA_CompanySetup_NBCU.jmx出现了一个错误:未知参数:PERF_SOA_CompanySetup_NBCU.jmx errorlevel=1 按任意键继续...谢谢,Raj - rpagadala
要并行运行多个脚本,您需要创建多个JMeter JVM进程实例,即运行2个JMeter实例。对于Linux,我已经提供了脚本<stmt1>和<stmt2>,它将在后台启动2个运行您的脚本的Jmeter实例。从错误来看,我认为您使用的是Windows。在Windows中搜索批处理编程中的后台运行命令,然后您可以编写一个批处理脚本<stmt1>在后台运行和<stmt2>在后台运行。如果仍然不清楚,我们可以进行聊天室讨论。 - Nachiket Kate
5
Jmeter.bat或Jmeter.sh -n -t script1.jmx script2.jmx ...无法起作用,它无法识别作为-t的一部分传递的第二个参数。因为出现了非法参数异常而失败。 - manu endla
使用多个文件时它无法工作。 - yuvraj

4

谢谢Dmitri!尽管我已经安装了标准插件,但像你说的那样,我找不到合并结果选项。我正在使用Verizon 2.11。 - rpagadala
嗨Dmitri,你能提供一下如何使用JMeter Maven插件逐步运行多个脚本的方法吗?并且我在http://jmeter-plugins.org/网站上找不到Mvn / Ant插件。谢谢,Raj。 - rpagadala
这是关于编程的内容,翻译成中文如下:方向错了,应在Maven网站上查找JMeter插件。 - CharlieS
另外,不确定Maven如何并行运行测试,Ant可以,但是Maven似乎是顺序的。@dmitri-t? - CharlieS
Maven可以分叉出独立的JVM进程,因此这是可能的。http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html - Dmitri T
@DmitriT surefire是为junit和testng设计的,如何配置它以并行运行jmeter? - CharlieS

4

简单的方法是同时从命令行启动所有脚本,并让每个脚本编程指定用户数量等参数。我使用的是Windows系统,可以创建一个批处理文件,其中包含多行类似以下内容:

start /REALTIME java -jar ApacheJMeter.jar -n -t test_script1.jmx -l results1.jtl -j log1.log -Dthreads=40 -Dduration=1800

然而,针对您的规模,我建议您通过自动化来更好地控制测试。我已经设置了一个Jenkins服务器,可以使用Maven或Shell脚本运行JMeter脚本,并汇总结果、创建图表等。它能够并行触发作业、顺序触发作业、随机触发作业或由其他事件触发作业。我还建议您设置脚本以使用线程数、循环和持续时间的属性,这样您就可以轻松地从Jenkins中控制它们,而无需修改脚本。创建一个用户定义变量配置元素,并将属性值复制到变量中,设置默认值,即:
THREADS    ${__P("threads", 25)}

这意味着可以在线程组中使用${THREADS},默认值为25。如果你在命令行上指定了一个值,它将被用于替代默认值。你可以通过JVM命令行定义它,在启动JMeter时像这样:

-Dthreads=40

在你的脚本中,${THREADS} 的值现在将会是40。


你是否有关于如何创建jMeter服务器的文章或博客? - singh2005

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接