启动Master:
(1)在Master节点上,进入到JMETER_HOME/bin目录下,编辑jmeter.properties文件,将参数“remote_hosts”设置为以逗号分隔的Slave节点IP列表
(2)在Master启动Slave节点:jmeter -n -t xxx.jmx -r
关于分布式模式运行JMeter详情参考:
Apache JMeter Distributed Testing Step-by-step
分析测试报告JMeter从3.0之后就支持自动生成测试报告,只需要在执行测试时指定参数“-e”和“-o”即可,“-e”参数设置需要自动生成测试报告,“-o”参数指定测试报告目录(该目录不能已经存在)。
举个例子:jmeter -n -t xxx.jmx -l ./yyy.jtl -e -o ./zzz。
当然,还可以使用“-l”参数产生的测试结果文件生成测试报告:jmeter -g ./yyy.jtl -o ./zzz(这种报告生成方式非常有用,例如:运行JMeter压测的机器性能不够好时,在并发量很高的情况下自动生成测试报告会非常慢,此时可以在执行测试的时候只保存测试结果文件,然后将测试结果文件下载到性能更好的机器上再通过命令行的方式手动生成测试报告)。
关于JMeter生成测试报告还可以参考如下文章:
1.JMeter-自动生成测试报告
2.Generating Report Dashboard
性能测试中,我们最关心的指标是吞吐量和响应时间,在JMeter生成的测试报告中,已经非常人性化地展示了这些指标。
APDEX这是由APDEX公司推出的表示应用程序性能满意度的指标,值范围为:0-1,因此,满意度越接近1说明应用程序的性能越好。
在实际应用中,这个指标仅仅只能作为应用程序性能的一个非常粗略的判断依据,因为在性能测试过程中还要考察响应时间的大小。比如:在一次压测过程中所有请求都得到了响应,此时满意度可能为0.99,但是99%的请求响应时间为1分钟,这显然是不可接受的。
在JMeter生成的测试报告中有一个关于响应时间和吞吐量的统计报告,如下图所示:
首先,需要关注的是99%的请求响应时间(99th pct)统计,会把所有请求的响应时间做统计对比,通过该指标值可以非常明确地知道接口性能是否达标,如果响应时间不满足要求,则需要考虑是否进行优化。
其次,当响应时间符合预期时还可以看到接口的吞吐量(Throughput),即:每秒请求数。
在JMeter性能测试报告中,关于响应时间和吞吐量的统计概要也只是一个非常粗略的参考指标,这个统计数据会受到测试用例在启动和结束时的干扰,更加详细和准确的统计结果应该查看图形化的报表,非常直观。
Response Times Over Time:响应时间
Active Threads Over Time:并发线程数
Transactions Per Second:每秒事务数,可以理解为每秒请求数
Response Time Vs Request:响应时间与请求数的对比
Response Time Percentiles:响应时间百分比
Response Time Distribution:响应时间分布
关于测试结果统计报表的解读可以参考:JMeter-自动生成测试报告
常用插件及扩展JMeter自带的功能基本可以完成一些常见的性能测试任务,如果需要实现一些功能更加强大的测试,可以通过插件的方式进行扩展。
JMeter安装插件有2种方式:
(1)通过插件管理器下载,实际上JMeter的插件管理器本身也是一个插件,详见:https://jmeter-plugins.org/install/Install/ 。
(2)手动下载,将插件包下载到$JMETER_HOME/lib/ext目录,重启JMeter即可。
1.Concurrency Thread Group
相比起JMeter自带的Thread Group,该插件可以模拟更加真实的用户并发,也可以很方便地对压测时间进行设置。
2.HTTP Raw Request
功能比JMeter自带的Http Request有增强和优化。
3.Raw Data Source
支持从文件中读取数据,这样可以方便造一些压测需要的数据。
4.Transaction Throughput vs Threads
查看线程数与吞吐量的对比关系,可以非常直观地看到系统性能随着并发数的提高而产生的变化。
更多JMeter插件可以从JMeter Plugins下载。
除了丰富的插件,更多关于JMeter的***实践可以参考:Best Practices 。
关于对JMeter的扩展,详见:How to write a plugin for JMeter 。
Q1: java.net.NoRouteToHostException: Cannot assign requested address