Jmeter5 实现多机集群压测(主控机+1台代理机)
一、软硬件配置
本文环境(控制机、代理机都一样):
– Win7 64位
– JDK8
– 内存 8G
Apache JMeter5.0
JDK8 (JDK8以下,jmeter不会启动)
二、配置环境变量
安装好jdk、解压JMeter5后,分别配置环境变量JAVA_HOME、JMETER_HOME指向各自的目录(bin目录所在的那一级),并且把各自的bin目录路径都添加到系统变量Path的值里面,以;号分隔:;%JMETER_HOME%\bin;%JMETER_HOME%;%JAVA_HOME%\bin;%JAVA_HOME%\lib;不配置JMETER_HOME,运行jmeter-server时,会报错。
三、修改JMeter配置,开启代理机(Agent)功能
修改JMeter的bin目录下面的jmeter.properties文件:
找到server.rmi.ssl.disable 这行,去掉前的#,并且把它的值由默认的False改为true
找到remote_hosts 这行,去掉前面的#,并且把它的值由默认的127.0.0.1改为10.0.0.122:1099,这里的IP必须是本机的局域网IP,当然这个端口1099你可以修改为其它的,只要这个端口没有被本机其它进程占用就行。
还要配置服务端的端口:
双击bin目录的jmeter-server.bat启动代理机,正常应该显示如下图内容才正常:
这样就OK了
四、搭建控制机(Controller)环境
控制机就相当于集群压测的大脑,由它发指令给所有的代理机执行脚本任务,最后代理机把测试结果回传给控制机
跟代理机一样安装好、配置好JDK、JMeter的环境变量后,修改主控机JMeter的bin目录下jmeter.properties文件
找到server.rmi.ssl.disable 这行,去掉前的#,并且把它的值由默认的False改为true
找到remote_hosts 这行,去掉前面的#,并且把它的值由默认的127.0.0.1改为我本机的IP加端口:10.0.0.123:1099,这里的IP必须是本机的局域网IP,当然这个端口1099你可以修改为其它的,只要这个端口没有被本机其它进程占用就行,这里统一配置为1099。
此外还要配置服务端的端口,把局域网其它要组成集群的机器信息添加到remote_hosts里面来(包括本机):
下面这个很重要,很重要,不启动主控机的jmeter-server.bat,无法从菜单远程启动本机的无界面客户端进行测试
打开bin目录的jmeter-server.bat,这样就启动了本机作为JMeter服务器了
五、开启压测
执行bin
目录的jmeter.bat
启动本机的JMeter应用程序
我们通过菜单【运行 - 远程启动所有】调用当前主控机的NONE-GUI客户端以及代理机器的NONE-GUI客户端进行测试任务,最后看聚合报告
参数设置:
线程组:150
Ramp-Up Period(in seconds):5
这里为啥取样数是300呢?因为我们这个集群有2台机器啊(当前主控机+那台代理机),我们这里的脚本配置的是5s 时间内完成150个线程的启动,每个线程执行一次请求。所以总共采样数就是 (150*1)*2 = 300
仅供自主学习,详情可参考
https://blog.csdn.net/xiaocy66/article/details/83116979
原文地址:https://www.cnblogs.com/Rita-LJ/p/12555110.html
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- 使用腾讯云 GPU 学习深度学习系列之六:物体的识别与定位
- npm5 新版功能特性解析及与 yarn 评测对比
- H5直播避坑指南
- 龙门阵之 DevOps 门外汉须知
- 全面进阶 H5 直播(上)
- 这年头,不会斗图都毕不了业?
- 龙妈也会死?《权力的游戏》 AI 算法预测丹妮女王危在旦夕
- 腾讯云 GAME-TECH 沙龙干货回顾:海外网络拓展及质量把控
- 通过扩展让ASP.NET Web API支持W3C的CORS规范
- 腾讯云GAME-TECH沙龙干货回顾:腾讯游戏云全球化实践
- 腾讯云GAME-TECH沙龙干货回顾:猎豹游戏出海经验分享
- 腾讯云GAME-TECH沙龙干货回顾:绿洲全球化案例分享
- 基于云计算的 CV 移动交互应用研究(1):CV交互+云计算
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Angular StoreFeatureModule
- Angular Component之间的事件通知机制
- 如何将你的Python项目全面自动化?
- 正则表达式介绍与使用
- Angular ERROR NullInjectorError: R3InjectorError(AppModule)的错误分析
- 2.4-Air302(NB-IOT)-基础外设-延时,定时器
- Shell正则表达式一览表
- YAML基础语法
- 详解Kubernetes存储体系
- Python3 正则表达式特殊符号及用法.md
- Web网页响应式布局.md
- BootStrap应用开发学习入门1
- Python实现单链表和字典
- 关于如何做好运维管理工作的一点思考
- 2.6-Air302(NB-IOT)-基础外设-AD采集,NTC温度传感器B3950