我爱编程

Linux下进行JMeter分布式压力测试

2018-04-03  本文已影响0人  吉祥噜噜

在使用JMeter进行压力测试时候,往往因为运行JMeter机器本身性能问题导致实际并发量并不大。为了达到高并发量,我们需要多台机器协作一起发起压力测试。

原理

JMeter分布式压力测试分成两种角色,一种是Client,一种是Server。Client用于启动Server来进行测试,并在测试完收集汇总Server的结果。Server用于执行Client发过来的测试脚本。

动手试试

1,准备三台linux机器, 分别为clientserver1(10.0.0.95)server2(10.0.0.11)
2,分别在三台机器下下载并解压apache-jmeter-4.0.tgz
3,编辑在client机器下的apache-jmeter-4.0/bin/目录下的jmeter.properties文件,在remote_hosts配置上server端的IP,多个server地址用逗号分隔。如:

remote_hosts=10.0.0.95,10.0.0.11

4,分别启动在server机器上jmeter服务

#server1(10.0.0.95)
./jmeter-server -Djava.rmi.server.hostname=10.0.0.95
#server2(10.0.0.11)
./jmeter-server -Djava.rmi.server.hostname=10.0.0.11

5,启动client机器上的jmeter服务

jmeter -n -t  plan.jmx -l result.jtl -e -o /usr/local/nginx/html/report -r

参数说明:

-n : 非GUI 模式执行JMeter
-t : 执行测试文件所在的位置及文件名
-r : 启动所有在remote_hosts配置的服务器。不是分布式测试只是单点就不需要-r
-l : 指定生成测试结果的保存文件, jtl 文件格式
-e : 测试结束后,生成测试报告
-o : 指定测试报告的存放位置
指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是report 文件夹必须不存在否则报错

jmx文件可以在windows下在GUI模式下建立好,再上传到Client。
这里还有一个小技巧,我把报告生成在nginx目录下,这样当压力测试执行完后,我们可以通过访问nginx来查看报告。如: http://<host>:<port>/report。没有安装nginx就要把report下载到本地上用浏览器打开,报告是HTML文件形式。

jmeter生成的报告

注意:每个Server都是完整执行Client的脚本,因此实际执行的次数和并发数要乘以服务器数量。比如:脚本写着是10个并发,实际上并发数会等于10*N,N为Server的数量。

其它说明

1,默认端口是1099。Server默认端口没有修改情况下,Client的remote_hosts上配置的服务器地址不需要带上端口号。如果需要修改默认端口,可以通过修改server_port来修改端口。
2,当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至服务器,并放置在和脚本里写的一样的路径上。
3,启动时报错java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)这时只需修改jmeter.properties文件中的server.rmi.ssl.disabletrue就可以了。

上一篇下一篇

猜你喜欢

热点阅读