搭建jmeter分布式压测环境你可能会遇到的坑

最近在研究搭建一控三的分布式压测环境,首先网上研究一下教程,感觉好简单啊,shell命令来一波就可以了,一顿操作猛如虎,立马在三台linux系统的虚拟机上搭建了jmeter环境,在控制机准备好脚本,调试没问题之后,开始用负载机压测,然后问题一波一波(宝宝心里好苦,遇到问题问了各路大神,都说没遇到过,无解,只能自己一点一点琢磨,研究,o(╥﹏╥)o)

第一坑:启动jmeter-server服务时报:java.io.FileNotFoundException: rmi_keystore.jks

原因:因为从JMeter 4.0开始,RMI的默认传输机制将使用ssl。SSL需要密钥和证书才能工作,不使用ssl将存在安全漏洞。下面提示缺少jsk文件

解决办法:

1、修改jmeter.properites中 server.rmi.ssl.disable=true,关闭ssl功能(注意去掉前面的#)

 2、既然找不到rmi_keystore.jks文件,那么我们就去创建这个文件

   a,在控制机bin目录下,点击:create-rmi-keystore.bat

   b,在弹出的终端,根据提示一直填下去,遇到Yes与No就直接填y,然后回车就ok了,生成以下文件:

  c,复制控制机生成的rmi_keystore.jks到每一台负载机jmeter的bin目录下,即可,再启动就ok了~~~

第二坑:负载机启动之后,控制机无法访问负载机:java.net.ConnectionException:Connection refused:connect

控制机ping负载机:没问题,通了~

控制机Telnet负载机:完了,不通~

查看端口是否被占用:发现也没问题

关闭防火墙:iptables -F(清除所有防火墙规则),之后再Telnet,发现通了~(简单粗暴的关闭防火墙)

第三坑:启动负载机上的jmeter-server报错:Cannot start. besttest is a loopback address

原因:回环地址有问题

解决方法:

1、启动的时候,指定一个ip地址,在JMeter的bin目录下:jmeter-server -Djava.rmi.server.hostname=192.168.40.191(本服务ip)

2、或者修改jmeter-server文件,道理跟1一样:

第四坑:负载机结果不回传到控制机

监控负载机及日志发现异常报错:

分析:查看日志发现15.39:41时间时,线程请求在负载机确实是执行完了,但是在回写时,发生连接异常,但是不明白主机10.0.75.1是从哪里来的,为什么要向这个地址通信,一开始认为是该主机也在连接我的负载机,找运维查找,发现压根没有这主机,故排查认为是控制机这边打出来的!

但是想想:根据对 jmeter master/slave 通信机制的理解,不仅 master 主动向 slave 通信, slave 也向 master 主动通信,自然要知道彼此的地址。

由此联想到,在 slave 节点多网卡的时候,一般都设置hostname,猜测 master 也需要进行同样的设置,告知 slave 自己的通信地址。

master 主机的 system.properties后一行添加:java.rmi.server.hostname=10.192.72.39(master主机ip)

此时再检查负载机日志:

完美执行,并且控制机也接收到了负载的测试结果:

总结:遇到问题的过程中,请教了很多大神,但是大神说没遇到过这种问题,只能自己一点一点排查,定位问题,然后解决,这个问题耗时我两天才解决掉,真是多学多做,有些事不是你看着那么简单

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值