性能测试工具 [jmeter] 分布式测试实践 (GUI 模式和无 GUI 模式)

樂易 · 2019年05月17日 · 最后由 KacyInGit 回复于 2020年04月21日 · 3035 次阅读

缘由

  • 记录一下本次实践的过程以及遇到问题,供自己以后或者他人参考

准备

  • 两台 Mac 机器,一台既是 master 又是 slave;另一个单独作为 slave
  • 机器都下载 jmeter,且版本号一致
  • 最好 jdk 版本号也一致,配置好环境
  • 机器处在同一局域网下

Slave 机器配置

1、进入 bin 目录,找到 jmeter.properties 文件,以文本形式或者 vim 打开编辑,将 server_port 以及 server.rmi.localport 前面的注释去掉,配置端口号,笔者自定义为 4001 端口(端口设置前先确保此端口号不会占用其他端口号)

2、同样在 bin 目录下,找到 jmeter-server 文件,在终端直接sh jmeter-server启动
3、不幸遇到如下报错信息

Server failed to start: java.rmi.RemoteException: Cannot start. localhost is a loopback address.
An error occurred: Cannot start. localhost is a loopback address

  • 打开 jmeter-server 滑到最底下,可以看到文档有提示,修改 host 为本机 ip,保存

4、启动成功之后会打印出使用端口号

Master 机器配置

1、在 jmeter.properties 下配置 remote_hosts=xxx.xxx.xxx.xxx:端口号,多台机器之间用逗号隔开

GUI 模式

1、打开 jmeter,点击运行 - 远程机器,能看到 salve 机器

2、选择对应机器跑脚本或者启动全部,看到 slave 机器的终端有打印 log 表示运行成功 ,此时 slave 这边也会看到返回结果

无 GUI 模式

1、在 jmeter.properties 下配置jmeterengine.nongui.port=0

2、运行以下命令,192.168.2.186:5029 为 slave 机器 ip 和端口,多台机器之间用,号隔开

jmeter -n -t jmeter_test.jmx -R 192.168.2.186:5029,192.168.2.185:4001 -l test.jtl -e -o /Users/edz/Documents/jmx/report

3、控制台打印如下命令表示执行成功

4、执行成功可以看到保存的报告

遇到的问题

1、 slave 机器在启动 jmeter-server 的时候报错

Using local port: 4001
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 4001; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 4001; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
  • 在 jmeter.properties 里面配置不要使用 SSL

2、在 GUI 模式下选择远程机器报 no object 错误

  • 是因为在 slave 机器设置的时候 server.rmi.localport 和 server_port 端口号没有设置一致,重新设置一致保存即可

3、在无 GUI 执行时,保存的文件已经存在或者目录已经有文件,则在执行时会提示

个人理解是不是已经有过一次保存之后不能再次覆盖保存,所以每次都要新建文件夹或者目录,即命令运行的时候修改保存文件名称

jmeter -n -t jmeter_test.jmx -R 192.168.2.186:5029,192.168.2.185:4001 -l test1.jtl -e -o /Users/edz/Documents/jmx/report1

类似这样

共收到 4 条回复 时间 点赞

你好 我已经在我 slaver 机器上把这个开关关了,在 master 机器上启动提示 nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录);然后我又在 slaver 机器上通过生成了这个文件 create-rmi-keystore 生成了这个文件,但还是报错。请问碰到过这个吗。我这边用的 centos7 虚拟机,jmeter5.1.1。master 和 slaver 机器都是一样的 centos7 虚拟机,jmeter 版本也是一样的

zhanglimin 回复

不好意思现在才看到,我目前没有碰到过这种问题;不过我 google 了一下,” 解决方法:修改 jmeter.properites: server.rmi.ssl.disable=true,关闭 ssl 功能 “,希望能帮到你

zhanglimin 回复

你好,我也遇到了同样的问题,请问您解决了么

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册