Apache JMeter

jmeter分布式负载实践

2019-01-09  本文已影响1人  dono45

Jmeter可通过一台控制机(controller),控制多台负载机(slaver)并发测试。尽量保持两者的Jmeter和java版本一致,否则可能出现运行错误。本文基于linux系统搭建Jmeter,进行分布式负载介绍。

控制机配置

修改jmeter.properties文件.

remote_hosts=12.12.12.12:1099 #IP地址改为远程负载机地址并附加通信端口,若由多台负载机,IP地址用逗号隔开.

负载机配置

修改jmeter.properties文件.配置端口.若启动某个端口,需在防火墙打开该端口.

server_port=1099

server.rmi.localport=1099

开启端口:iptables -I INPUT -p TCP —dport 1029 -j ACCEPT

启动分布式负载测试

修改好配置后,先启动负载机,再启动控制机.

负载机:/opt/jmeter/apache-jmeter-4.0/jmeter-server

控制机可通过GUI和non-GUI方式调用负载机工作.推荐使用non-GUI方式,节省资源,因为报告等内容较多,容易损耗宝贵的系统资源.命令行如下:

jmeter -n -t test.jmx -l report.jtl -r

-n 表示jmeter通过NO-GUI方式运行

-t 后跟测试脚本

-l 输出测试结果日志.生成格式为jtl,可用GUI打开该日志查看结果

-r 启动远程负载机

关于控制机接收到的日志,以GUI方式打开,发现没有response_data的数据。这是jmeter默认的日志格式,不包含response_data等信息,是为了尽可能减少系统资源消耗,把更多资源用于形成负载。若确实需要查看日志的该类信息,可修改jmeter.properties和user.properties两个文件。分别做如下改动:

jmeter.properties更改:

user.properties文件最后添加:

jmeter.save.saveservice.output_format=xml

jmeter.save.saveservice.response_data=true

jmeter.save.saveservice.samplerData=true

jmeter.save.saveservice.requestHeaders=true

jmeter.save.saveservice.url=true

jmeter.save.saveservice.responseHeaders=true

常见问题

1.控制机启动远程测试,提示’没有到主机的路由’.

检查负载机的网络配置,端口配置,是否用合适的公网ip和端口在监听.若发现负载机用私网地址监听(若没有指定网卡,jmeter是任意选择一个网卡进行监听),修改jmeter-server文件:

RMI_HOST_DEF=-Djava.rmi.server.hostname=12.12.12.12 #改为合适的公网ip

网络IP检查为合适IP,仍提示没有到主机的路由,查看负载机的日志jmeter-server.log.如发现所用ip仍为私网ip或127.0.1.1的回环地址,可修改hosts文件.在开头添加

12.12.12.12 localhost

2.负载机接受到指令,并运行测试脚本,但控制机没有收到结果,一直等待测试结束.

t初步推测为控制机的相应端口没有打开.telnet控制机端口,发现确实没有开,然后尝试打开该端口,重新测试.然而对于不太了解防火墙的我来说,最简单的方法莫过于直接关闭防火墙.这样基本都能解决问题.本人用的是centos7.4,关闭防火墙用如下命令:

systemctl stop firewalld.service

上一篇 下一篇

猜你喜欢

热点阅读