jmeter分布式并发测试

1、开发测试脚本
添加线程组:设置线程数、循环次数
添加https请求
添加cookie、参数化、后置处理器
注:如果并发较小100以内,可以使用一台机器做并发测试,如果并发较大如10000,则需要部署多台机器测试

2、jmeter分布式集群—部署多台机器进行性能压力测试
在进行压力测试的时候,随着并发用户的增加,电脑的性能(CPU,内存)占用是非常大的,我们利用jmeter的分布式来缓解机器的负载压力,分布到多台机器同时运行,进行测试。

1).Jmeter分布式执行原理:
  a、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
  b、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。
  c、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。

2).代理机器(Agent)配置:
a、首先安装好JDK,jmeter,配置好环境变量(版本需要与控制机统一)
b、查看本机IP地址
c、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,1099是端口号,可以随意自定义。
d、打开jmeter-server.bat文件(linux中打开jmeter-server),就设置完成了,等待控制机(Controller)启动。

3).控制机(Controller)配置:
a、Controller机上需要安装JDK、Jmeter,并且配置好环境变量。
b、查看本机IP地址
c、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。
d、打开jmeter-server.bat文件(linux中打开jmeter-server),设置完成了。

4).开始添加线程组和请求来运行查看结果:
a、打开jmeter.bat文件,添加线程组,编辑线程数,这里设置500个线程数,持续执行5分钟,就是一台机器发送500 * 300(s)个请求。或者设置500个线程数,循环执行2次,就是一台机器发送500 * 2个请求。
b、然后添加HTTP请求开始编写脚本。
c、添加察看结果数和聚合报告,点击运行,可以选择远程启动或者远程全部启动;如果是点击远程启动,可以选择任意一台电脑来运行;如果是点击远程全部启动就会运行控制机和所有的代理机。
d、这里选择远程全部启动,运行结束后,查看聚合报告;如果每台电脑设置的线程数为200,这里一共是两台电脑,所以是200*2=400个线程数。

问题
slave机器的自定义端口号配置
1、在slave机器的%JMETER_HOME%bin目录下找到jmeter.properties,修改如下两项配置,即可自定义端口号:
server_port=1029
server.rmi.localport=1029
2、修改后执行服务端的jmeter-server即可看到控制台消息中修改是否生效;修改生效后需在客户端修改相应的jmeter.properties下的remote_hosts。

slave机器和客服端多网卡的问题
3、我在执行过程中slave机器的jmeter-server.log和客户端的jmeter.log中均报错提示connect refused。经过检查后发现服务器上有2个网卡,客户端有两个网卡,两台机器通过vpn在内网环境通信。而jmeter在远程通信的时候是随机选择一个网卡的ip,这样很容易导致连接不成功。
4、可通过如下配置指定服务器和客户端的网卡,在服务器端的jmeter-server文件中,修改配置指定服务器端的网卡ip
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.165.124.6
在客户端的jmeter.bat中修改配置指定客户端的网卡ip
增加配置项:set rmi_host=-Djava.rmi.server.hostname=10.165.120.4
修改配置项:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%
5、在修改配置后尝试远程启动,发现还是不成功,打开客户端jmeter.log,发现客户端发送成功;打开服务器端的jmeter-server.log显示服务器连接客户端不成功,尝试ping了一下也确实ping不通,然后网上搜了一下说是因为客户端的防火墙阻止了,关闭客户端所有防火墙,再次执行,测试成功。
6、依赖文件报错的问题
当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至服务器,并需要设置正确的路径。

Controller机器和slave机器无法连接的问题
7、远程找不到slave机器
ping一下slave机器,如果出现Request timeout for icmp_seq 0
可以尝试关闭slave机器防火墙,也可能是Controller机器连接了vpn
8、slave机器开始后一直无返回响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值