Java教程

jmeter分布式

本文主要是介绍jmeter分布式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

jmeter分布式

为什么要用分布式?

因为jmeter在做性能测试的时候,我们理想状态下,可能想让线程组跑几千上万个线程,一起向服务器施加压力,看服务器能不能承受得住,但是每台电脑都有自己的并发上限,这个和当前电脑的配置有关系,如果当前电脑的配置比较高,可能能虚拟出更多的虚拟用户出来,如果配置不高,可能就不能虚拟出更多的用户,因为在虚拟用户的时候,需要分配电脑上的资源,去创造那么多虚拟的人出来,需要消耗很大的资源,达到一定的数量之后,电脑就虚拟不出来那么多的人

比如说电脑最大只能虚拟500个人,想要测试600人那就测不出来了,这种时候就需要用到分布式测试

分布式

分布式是分摊自身机器产生虚拟用户的压力(自身机器由于配置的原因最多只能产生500个虚拟并发用户,其他用户用另外机器一起分工合作,分摊自身机器的压力,最终实现产生800个或者1000个并发用户向服务器发起请求的目的,是分摊自己的压力,并不是减轻对服务器的压力)

集群

集群是我们的服务器有多台机器组成在一起,集合在一起向外来提供服务,内部就是一个集群,是分摊服务器自身处理能力的方式

服务器分摊压力的一种方式

分布式

主控机器控制5台控制机向服务器发起请求,服务器收到请求之后将处理的结果分发给这5台机器,5台机器再把结果给到控制的机器,这样就实现了把自身压力分摊到5台机器上一起向服务器造成压力

将自身的压力分摊到5台机器上。向服务器发起请求,然后服务器处理完之后返回结果到五台服务器并且返回给master(监控机器)

img

分布式配置:

保持一致:jdk一致,jmeter版本一致(本机zip)脚本最好使放到jmeter的zip

网络:同一个局域网

例如:自己电脑+同事电脑需要一致性

img

img

需要使用相对路径:csv的文件与jmx文件路径一致

把本地jmeter根目录打包成zip发送给你的助攻机器上(这样可以保证jmeter的一致性)

也可以使用自己电脑上的虚拟机,只要网络是net网络动态分配(不是固定配置的网络)就可以,确保虚拟机和本机是在同一个网络下

可以查看虚拟机的网段和自身机器是不是在一起的(使用ipconfig)

助攻机器上先要用jmeter确认版本一致

助攻机配置

进入到助攻机器上,在jmeter文件夹的bin文件夹下找到属性配置文件properties

img

1.首先将语言改为中文zh_CN

2.在配置文件中找到server_port,可以看到默认端口,可以自己去定义这个端口配置一下。例如配置为8887

3.在配置文件中找到server.rmi.port,可以看到默认端口,将这个端口改为和server_port一样的为8887

4.在配置文件中找到server.rmi.ssl.disable,默认为false,需要将它改为true(之前是ssl加密传输认证可用,现在改为不可用)

5.保存配置文件properties

6.在助攻机上确认jdk,如果没有就需要进行安装jdk

7.确保助攻机器的防火墙是否关闭(防火墙一定要能够正常通过端口)服务通过不能防火墙就不能对外提供服务,可以临时关闭防火墙systemctl stop firewalld.service

助攻机器如果不关闭防火墙就可以开启对应的端口(server_port)不然服务出不来无法访问服务

8.启动服务 Windows下 :jmeter-server.bat -Djava.rmi.server.hostname=助攻机ip ; 如果是linux系统jmeter-server -Djava.rmi.server.hostname=助攻机ip

​ 这个命令需要在jmeter的bin文件夹下执行

在实际使用中不要用虚拟机,相当于还是自身电脑的资源

运行之后回到控制机

控制机配置

进入到控制机器上,在jmeter文件夹的bin文件夹下找到属性配置文件properties

img

1.在配置文件中找到remote_hosts。看到默认ip为127.0.0.1,为本机,要将它修改为助攻机器的ip地址192.168.0.122:端口号(这个端口号为刚刚在助攻机中填写的端口8887)如果有多台助攻机,可以配置端口不一致也可以一致。例如有两个助攻机,那这时配置为192.168.0.122:8887,192.168.0.124:8886

2.在配置文件中找到server.rmi.ssl.disable,默认为false,需要将它改为true(之前是ssl加密传输认证可用,现在改为不可用)

3.在配置文件中找到mode,可以直接取消注释,也可以添加mode=Standard(用于显示监视结果,如果没有配置,将看不到助攻机器的实时结果)

4.重启jmeter

在jmeter界面的运行--远程启动可以看到配置内容

img

1,在启动助攻机的机器后,在主机上运行命令看能不能连接助攻机(网络能不能通)

telnet 助攻机ip:端口

2,在主机的jmeter下打开对应的线程组,在运行菜单下点击远程启动,可以看到助攻机的ip和端口

点击这个ip

img

可以看到命令行窗口在执行

img

这个时候是助攻的机器在向服务器发起请求,主控机器并没有向服务器发起请求

主控机器上可以看到助攻机器发起请求之后的各种数据

修改主机上的线程组场景,助攻机器的运行场景也会变化

修改主机上的脚本,助攻机器的也会变化

服务器收到的线程数是助攻机器的总和

只能按照平均值来的,就是现在线程总数为1000,每台机器线程数为500

修改主机上的线程组,助攻机器进行执行,但是助攻机器本身的线程组没有变化

img

img

active 活跃线程数 这个数据是有有几台机器就有几条

其他两个响应时间和tps只有一条

如果要主机和助攻机同事发起请求,就要在主机中配置成和助攻机器一样的

img

在主机配置中,助攻机器ip就是本身的ip地址所以用逗号分开,加上自身的ip地址

img

img

做分布式的原因:

不可能无限量的区虚拟出虚拟用户,需要分布式来分摊压力(其他人一起进行分布式)

img

img

这篇关于jmeter分布式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!