您的位置:首页 > 其它

命令行模式运行jmeter,主从方式运行jmeter

2015-12-22 12:55 351 查看
jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行。简单介绍下命令行运行的方式:

sh jmeter.sh  -n -t my-script.jmx -R 10.6.5.31,10.6.5.35,10.6.5.36,10.6.5.37,10.6.5.72 -l 8.jtl


上面一条命令应该可以满足大部分需求。
-n:使用命令行模式运行
-t:指定要运行的jmx脚本
-R:指定使用那些slave节点压测
-l:压测记录保存在哪里


使用
-R
指定节点时,当然要首先在这些节点上启动jmeter-server的服务,
-l
指定日志,jmeter运行过程中的所有请求记录,都会保存在这个jtl文件中。


调试压测请求

命令行下,如果想查看每个请求返回的结果,需要修改jmeter.properties配置文件,
#jmeter.save.saveservice.assertion_results=none
#jmeter.save.saveservice.data_type=true
#jmeter.save.saveservice.label=true
#jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
#jmeter.save.saveservice.response_data=false
# Save ResponseData for failed samples
#jmeter.save.saveservice.response_data.on_error=false
#jmeter.save.saveservice.response_message=true
#jmeter.save.saveservice.successful=true
#jmeter.save.saveservice.thread_name=true
#jmeter.save.saveservice.time=true
#jmeter.save.saveservice.subresults=true
#jmeter.save.saveservice.assertions=true
#jmeter.save.saveservice.latency=true
#jmeter.save.saveservice.samplerData=false
#jmeter.save.saveservice.responseHeaders=false
#jmeter.save.saveservice.requestHeaders=false
#jmeter.save.saveservice.encoding=false
#jmeter.save.saveservice.bytes=true
#jmeter.save.saveservice.url=false
#jmeter.save.saveservice.filename=false
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false


将上面的注释打开,并且值修改成true,就会打开该条记录,jmeter就会将该条信息输出到我们指定的jtl文件中,不要要注意压测过程中,会产生大量的这样的记录,真正压测时,最好不要开太多的日志记录。


实时查看压测结果

jmeter命令行下,也可以实时查看压测结果,同样是修改配置文件jmeter.properties。
# Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode)
#---------------------------------------------------------------------------
#
# Define the following property to automatically start a summariser with that name
# (applies to non-GUI mode only)
#summariser.name=summary
#
# interval between summaries (in seconds) default 30 seconds
#summariser.interval=30  //这个表示统计频率
#
# Write messages to log file
#summariser.log=true
#
# Write messages to System.out
#summariser.out=true //是否将统计结果输出到控制台


打开上面的summariser.name、summariser.interval、summariser.out这三个配置项,保存,重新运行jmeter,应该就可以在shell里看到统计信息了。
Remote engines have been started
Waiting for possible shutdown message on port 4445
summary +   3036 in     3s = 1001.6/s Avg:    25 Min:    14 Max:    58 Err:  3036 (100.00%) Active: 61 Started: 58 Finished: 0
summary +  25670 in  10.3s = 2494.7/s Avg:    61 Min:    11 Max:   190 Err: 25670 (100.00%) Active: 261 Started: 258 Finished: 0
summary =  28706 in  13.1s = 2192.0/s Avg:    57 Min:    11 Max:   190 Err: 28706 (100.00%)
summary +  27300 in  10.3s = 2654.9/s Avg:   129 Min:    10 Max:   407 Err: 27300 (100.00%) Active: 461 Started: 458 Finished: 0
summary =  56006 in  23.1s = 2426.7/s Avg:    92 Min:    10 Max:   407 Err: 56006 (100.00%)
summary +  27200 in  10.4s = 2606.1/s Avg:   202 Min:    10 Max:   528 Err: 27200 (100.00%) Active: 660 Started: 657 Finished: 0
summary =  83206 in  33.1s = 2512.8/s Avg:   128 Min:    10 Max:   528 Err: 83206 (100.00%)
summary +  26300 in    11s = 2478.3/s Avg:   284 Min:    11 Max:   702 Err: 26300 (100.00%) Active: 861 Started: 858 Finished: 0
summary = 109506 in  43.1s = 2541.1/s Avg:   166 Min:    10 Max:   702 Err: 109506 (100.00%)
summary +  26200 in    11s = 2439.0/s Avg:   355 Min:    10 Max:   866 Err: 26200 (100.00%) Active: 1000 Started: 997 Finished: 0
summary = 135706 in  53.1s = 2556.0/s Avg:   202 Min:    10 Max:   866 Err: 135706 (100.00%)


这里的错误率是100%,正常情况下应该是0%。
使用非 GUI 模式运行 JMeter 压力测试

使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源。使用命令

jmeter -n -t <testplan filename> -l <listener filename>

(比如 jmeter -n -t testplan.jmx -l listener.jtl)

我的第一次使用命令行执行测试脚本时,看到的输出如下:

D:\Jmeter\bin>jmeter -n -t testplan.jmx -l listener.jtl

Created the tree successfully using testplan.jmx

Starting the test @ Fri Oct 28 07:50:29 CST 2009 (1256255429500)

Waiting for possible shutdown message on port 4445

Tidying up ... @ Fri Oct 28 07:50:34 CST 2009 (1256255434468)

... end of run

这些信息仅仅告诉我们执行成功啦。但是我想要看到本次测试的更多结果,JMeter 提供了一个可以显示结果概要的监听器,它在命令行中也可以进行输出显示。

我们可以通过给我们的测试计划添加 "聚合报告" 来达到这个目的。



现在我们在命令行重新键入上边那个命令:

D:\Jmeter\bin>jmeter -n -t testplan.jmx -l listener.jtl

Created the tree successfully using testplan.jmx

Starting the test @ Thu Oct 29 11:23:49 CST 2009 (1256786629265)

Waiting for possible shutdown message on port 4445

Generate Summary Results + 5 in 8.5s = 0.6/s Avg: 981 Min: 296 Max: 2344 Err: 0 (0.00%)

Generate Summary Results + 1 in 0.2s = 4.3/s Avg: 232 Min: 232 Max: 232 Err: 0 (0.00%)

Generate Summary Results = 6 in 9.6s = 0.6/s Avg: 856 Min: 232 Max: 2344 Err: 0 (0.00%)

Tidying up ... @ Thu Oct 29 11:24:02 CST 2009 (1256786642453)

... end of run

这次我们可以清晰地看到每个线程的执行情况。

这里是我们使用非 GUI 模式运行测试脚本时可以使用的一些命令:

-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

例如:

jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080

原文链接:https://girliemangalo.wordpress.com/2009/10/29/jmeter-run-scripts-from-the-console/

译者续

JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。比如你在 C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,JMeter 会去该目录下寻找 test1.jmx 脚本并把执行结果放在该目录。如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉 JMeter,比如:

C:\tools\apache-jmeter-2.11\bin>jmeter -n -t e:/defonds/work/20141106/add/addCustomerScript.jmx
-l e:/defonds/work/20141106/add/addCustomerScript201411060954.jtl



执行结果可以使用 GUI 模式下的聚合报告查看,比如你想要看 addCustomerScript201411060954.jtl 的报告,可以

打开 JMeter GUI 界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击"所有数据写入一个文件"下的 "浏览..." 按钮找到你刚生成的 jtl 文件就可以对执行结果进行直观分析了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: