jmeter 命令启动/分布式压测
场景说明:如果我们并发量比较大,一台压测机无法满足我们的测试需求,则需要多台压测机一起执行压测,那么如何进行分布式压测呢?
1、准备三台机器
主控机:172.18.16.85
调度机:172.31.7.37, 172.31.7.36
三台机器相同目录下安装了同版本的jmeter
2、主控机配置
$jmeter_home/bin目录下vim jmeter.properties修改
server_port=1099
server.rmi.ssl.disable=true(关闭SSL传输)
./jmeter-server
启动了之后可以在其他机器上检查是否连上telnet 172.18.16.85 1099 ,如下提示正常,回头也可以通过命令ps -ef|grep jmeter-server查看是否启动。
报错信息一:
Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address. An error occurred: Cannot start. localhost.localdomain is a loopback address.
解决方案:启动的时候指定host
./jmeter-server -Djava.rmi.server.hostname=172.18.16.85
3、调度机配置
$jmeter_home/bin目录下vim jmeter.properties修改
server.rmi.ssl.disable=true(关闭SSL传输)
remote_hosts=172.31.7.37:1099, 172.31.7.36:1099(执行机的IP, 多个执行机用逗号隔开)
4、关于rmi传输方式
由于从4.0版本开始,RMI的默认传输机制使用SSL,SSL需要密钥和证书才能工作,所以需要自己创建中和谐密钥。
$jmeter_home/bin目录下的create-rmi-keystore.sh执行生成rmi_keystore.jks密钥文件放到执行机的bin目录下。启动代理机。
5、测试文件拷贝到所有的调度机下,如果主控机参与压测也要拷贝,具体拷贝目录如下
将测试脚本和参数文件放到$jmeter_home/bin目录下
如果应用了jar包的话放到$jmeter_home/lib/ext目录下
6、在主控机上执行命令
jmeter -n -t test.jmx -R 172.31.7.37,172.31.7.36 -l result1.jtl