一切福田,不離方寸,從心而覓,感無不通。

Jmeter分布式压测

简单来说就是,多台机器同时安装jmeter,选择一台机器作为调度机,其他作为压力机。进行相应的配置后,就可以用调度机操控压力机发起请求。

分布式执行原理

负载机配置

安装JAVA
  1. 下载并解压JDK

配置jdk的环境变量


  1. 再执行source /etc/profile刷新配置文件
  2. 通过java -version查看是否设置成功
安装Jmeter

下载jmeter.tgz文件,并将文件上传至/data/


  1. 再执行source /etc/profile刷新配置文件
  2. 通过jmeter -v查看是否设置成功
    在jmeter目录创建testplan testresult子目录 , 将测试脚本login.jmx上传至testplan,进入bin文件下执行测试输出测试结果命令

分布式配置

调度机Controller

  1. 在多台机器中按照上述步骤配置jmeter,选择其中一台为调度机,其他为执行机
  2. 在调度机上修改bin/jmeter.properties, 添加执行机的IP及端口 , 1099是默认的rmi通信端口

案例中 , 192.168.174.130:1000即是执行机IP和端口号

  1. 取消server.rmi.ssl.disable=false的中注释并将false改为ture

  1. 开启执行脚本机器上的server服务,bin/jmeter-server
  2. 在控制机执行分布式命令

执行机Agent

  1. 修改jmeter.properties

  1. 然后执行命令 , 启动服务


遇到的问题及解决

An error occurred: Cannot start. localhost is a loopback address

In latest version, you can run your script with:指定本地IP
解决方案:


java.io.FileNotFoundException: rmi_keystore.jks

1、Jmeter4.0,启动slave报错java.io.FileNotFoundException: rmi_keystore.jks

image
  • 解决方法一:slave的jmeter.properties中,设置server.rmi.ssl.disable=true
    原因:jmeter4.0以上的版本,默认启用RMI连接的安全通信,需要创建密钥库。所以将SSL禁用即可。
  • 解决方法二:手动生成秘钥和证书。执行create-rmi-keystore.bat(Windows适用)或create-rmi-keystore.sh(Linux适用)
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

在使用java远程启动linux服务器上的jmeter服务是报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

查询该报错基本都是tomcat操作 , 编辑jmeter/bin/jmeter-server文件,在顶部添加JAVA_HOMEJRE_HOME即可

解决Tomcat异常

其它说明

1.调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。

  1. 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
  2. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
  3. 若是脚本中设置的并发线程数是100,采用3台slaver机器去施加压力,那么对于服务端来说,此时的并发线程数是300。
  4. 为了减少出错的可能性,最好按照如下Jmeter 分布式要求:
  • 各个机器在相同目录下安装相同版本的jdk;
  • 各个机器在相同的目录下安装相同版本的jmeter;
  • 配置/etc/hosts的IP和hostname的映射。
  • 修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。

基础docker&k8s的分布式压测方案

更多资料可查看
https://github.com/kubernauts/jmeter-kubernetes

作者:Kevin_Luo
链接:https://www.jianshu.com/p/74f046adcd21
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。