性能测试-jmeter分布式

1,什么是分布式

用单个 JMeter 客户端控制多个远程 JMeter 引擎。通过远程运行 JMeter,从而在服务器上模拟更大的负载。

  • 将测试样本保存到本地机器
  • 从单台机器管理多个 JMeterEngine
  • 无需将测试计划复制到每个服务器 - 客户端将其发送到所有服务器

2,为什么要做分布式

实现更大负载;

原理图:

3,怎么做

3-1,准备工作

负责控制的服务器,我们称之为控制机;负责脚本运行的机器,我们称之为负载机;

3-1-1,安装java

为控制机和负载机配置相同的java

3-1-2,安装jmeter

为控制机和负载机配置相同的jmeter,可本地下载后,scp到需要使用到服务器;

3-1-3,配置环境变量

将java和jmeter配置到环境变量,linux下配置到/etc/profile文件;

3-1-4,检查注意事项

  • 系统上的防火墙已关闭或打开了正确的端口。

    检查防火墙状态:firewall-cmd --state firewall-cmd --state 

    关闭防火墙:systemctl stop firewalld

  • 所有客户端都在同一个子网上。
  • 如果使用192.xxx或10.xxx IP 地址,则服务器位于同一子网中。如果服务器不使用192.xx或10.xx IP 地址,应该没有任何问题。
  • 确保 JMeter 可以访问服务器。
  • 确保在所有系统上使用相同版本的 JMeter 和 Java。混合版本将无法正常工作。
  • 您已为 RMI 设置 SSL或禁用它。

3-2,配置控制机和负载机

  • 检查服务器dns配置是否打开:/etc/resolv.conf中nameserver是否打开,未打开时,需要打开;

  • 存在参数文件时,需存放到控制机和负载机相同目录下;
  • 在jmeter.properties中配置远程主机remote_hosts=ip1,ip2
  • 选择是否启用SSL,默认启用

    选择启用时,操作如下:

    • 创建密钥;

      该脚本位于bin目录中,可用于 Windows 系统(称为bin/create-rmi-keystore.bat)和类 Unix 系统(称为bin/create-rmi-keystore.sh)。它将生成一个密钥对,有效期为 7 天,默认密码短语为“ changeit ”。建议从bin目录中调用它;

      运行后,可一直回车,遇到yes/no时,输入y,完成后,bin目录下生成rmi_keystore.jks文件,说明执行成功;

    • 复制密钥;

      复制rmi_keystore.jks到所有负载的jmeter/bin目录下;

      若运行时,提示找不到rmi_keystore.jks文件时,可在bin/下jmeter.properties中设置server.rmi.ssl.keystore.file=rmi_keystore.jks的绝对路径

    • 配置system.properties文件;

      在控制机和负载机下在bin/下system.properties最后追加java.rmi.server.hostname=本机IP

    • 检查是否成功,jmeter/bin目录下运行 jmeter-server.bat(在 unix 上 为jmeter-server );如下图所示代表成功;

    选择禁用时,操作如下:

    • 在bin/下jmeter.properties中将server.rmi.ssl.disable注释打开,并修改为true;

    • 检查是否成功,jmeter/bin目录下运行 jmeter-server.bat(在 unix 上 为jmeter-server );如下图所示代表成功;

3-3,运行脚本

未配置环境变量时:/srv/jmeter/apache-jmeter-5.4.3/bin/jmeter -n -t jmeter1.jmx -r -l result.jtl

配置环境变量时:jmeter -n -t jmeter1.jmx -r -l result.jtl

带参数执行(参数引用:${__P(threadNum, 1)}):jmeter -n -t jmeter1.jmx -r -l result.jtl -JthreadNum=100 -JloopNum=1 -JrampupTime=0

线程数:threadNum;循环次数:loopNum;启动间隔时间:rampupTime

生成报告(跨服务器需要用-G进行传参): jmeter -n -t jmeter-login.jmx -r -l /srv/jmeter/result.jtl -JthreadNum=100 -JloopNum=1 -JrampupTime=0 -e -o /srv/jmeter/reports

3-4,查看报告

运行后,生成报告,可复制到本地进行查看;

4,优缺点

优点:

1,支持更大负载;

2,使用no gui模式,可减少本地资源占用;

缺点:

1,修改脚本没有界面形式便捷;

2,生成报告不够便捷,需另改名或删除之前的报告;

3,报告查看不够方便;

5,一些坑

问题一:java.net.UnknownHostException:Name or Service not known;

解决:控制机和负载机需要修改配置文件:在/etc/resolv.conf中设置nameserver

 /etc/resolv.conf:DNS客户机配置文件

nameserver:定义dns服务器IP地址

domain:定义本地域名

search:定义域名搜索列表

sortlist:对返回域名进行排序

问题二:rmi_keystore.jks已经在bin目录下,依然找不到,rmi_keystore.jks (No such file or directory)

解决:将在属性“server.rmi.ssl.keystore.file”中引用rmi_keystore.jks

问题三:本地进行传参使用-J可以,且分布式也能正常运行,但是传参就不生效;

解决:向服务器传参需要使用-G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值