分布式压测

JMeter分布式压测(保姆教学)

一台控制机,两台执行机

台机器需安装相同版本的jdk和jmeter(JDK1.8)

jdk安装和配置

jdk下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Windows环境
没有配置过Windows环境jdk的友友可以参考文章
http://t.csdnimg.cn/K5DAi

提供环境验证代码

JAVA_HOME
C:\Program Files\Java\jdk1.8.0_251
JRE_HOME
%JAVAHOME%/jre
CLASSPATH
.;%JAVA_HOME%\lib;%JRE_HOME%\lib
%JAVA_HOME%\bin
java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
Linux(两种方式)
yum安装
  • 查看JDK版本,找到你想要安装的JDK版本,这里以 JDK1.8 为例
输入命令:yum -y list java*
输入命令:yum install -y java-1.8.0-openjdk.x86_64
出现Complete!安装完成
  • 查看JDK版本
输入命令:java -version
手动安装
  • 卸载OpenJDK以及相关的Java文件

    • 查看Java信息及相关的Java文件
    查看JDK信息,输入命令:java -version
    检测JDK安装包,输入命令:rpm -qa | grep java
    
  • 删除Java相关文件(/usr/lib/jvm是默认openjdk安装路径)

    进入安装目录。输入命令:cd /usr/lib/jvm
    
    删除Java相关文件(注意:会删除所有文件,如有其他文件,请不要使用此命令删除),输入命令:rm -rf /usr/lib/jvm 
    
安装JDK
  • 新建一个存放安装包的文件夹
创建文件夹,输入命令:mkdir /usr/local/java
  • 将下载的安装包传到该文件夹

    通过文件传输工具传过去,rz等
    
  • 解压安装包

输入命令:tar -zxvf jdk-8u351-linux-x64.tar.gz
  • 修改配置文件/etc/profile,配置环境变量
输入命令:vim /etc/profile
  • 在配置文件最下方添加下面三种任意一种
注意:JAVA_HOME=/devFile/jdk/jdk1.8.0_261  就是你自己的目录
#java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin#java environment
export JAVA_HOME=/home/jdk/jdk1.8.0_261
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin#java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH
  • 重新加载配置
输入命令:source /etc/profile
  • 查看安装情况
输入命令:java -version

jmeter安装教程

jmeter下载地址
https://jmeter.apache.org/download_jmeter.cgi
Windows
  • 安装jmeter
把下载的安装包解压到某一目录即可,提示:安装目录不用出现中文或空格
  • 配置环境变量 (其实可以不用配置环境变量的,但是后期会用到命令行来执行脚本所以得配)
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
  • 验证启动
1、双击jmeter.bat(在bin文件夹里)2、双击ApacheJMeter.jar(在bin文件夹里)3、可以cmd命令行打开jmeter 输入:java - jar apachejmeter - jar  或者 jmeter 能打开就安装成功了。
Linux
  • 使用rz命令将安装包上传至对应的文件路径
rz命令安装:yum install -y lrzsz
unzip命令安装:yum -y install unzip
unzip -n apache-jmeter-5.4.1.zip
  • 配置jmeter环境变量

    • 使用vim命令编辑/etc/profile文件
    vim /etc/profile
    
    • 光标移动至文档最后,使用insert键插入要添加的内容
    export JMETER_HOME=/mytest/jmeter/
    export PATH=$JMETER_HOME/bin:$PATH
    export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJmeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
    
    • 编辑成功后,使用Esc键退出编辑模式,:wq保存当前结果
    • 使环境变量生效
    source /etc/profile
    

    注:
    /mytest/jmeter/是jmeter的安装路径

  • 查看安装情况

jmeter -v
  • 如果执行jmeter命令,提示
../bin/jmeter: Permission denied
  • 解决方法:给Jmeter安装目录授权,切换至jmeter安装目录,执行以下命令
chmod -R 777 apache-jmeter-5.4.1
  • 执行测试
  • 命令1
    • 在当前脚本所在路径下执行以下命令
sh ../jmeter/bin/jmeter.sh -n -t test2.jmx -l /mytest/testscript/result/result1.jtl -e -o /mytest/testscript/report

参数说明
…/jmeter/bin/jmeter.sh :jmeter.sh的文件路径
test2.jmx:压测脚本
/mytest/testscript/result/result1.jtl:运行结果存放路径
/mytest/testscript/report:图形报告存放路径
-n:以NoGUI方式运行脚本
-t:后面接脚本名称
-l:后面接日志名称,保存运行结果
-e:运行结束生成测试报告
-o:测试报告目录路径

  • 命令2
jmeter -n -t test2.jmx -l /mytest/testscript/result/result1.jtl -e -o /mytest/testscript/report

运行结束后,在Xftp工具对应目录中查看运行结果和图形报告

原理

Jmeter分布式压测:Jemter分布式压测是选择其中一台作为调度机(master),其他机器作为执行机(slave);当然一台机器也可以既做调度机,也做执行机。
调度机执行脚本的时候,master将会jmx脚本分发到slave上,slave拿到脚本后以非GUI的形式开始执行。
slave执行完毕后将结果回传给master,并由master进行结果的汇总。

环境搭建

master:Windows10,JMeter版本5.1.1,jdk版本1.8;

slave:2台linux虚拟机(CentOS 7),JMeter版本与master一致,5.1.1,jdk版本1.8;

总结:slave上JDK和Jmeter版本尽量和master上保持一致。

slave机器配置

关闭各slave机器上防火墙

systemctl stop firewalld

关闭各slave机器上SSL配置。RMI的默认传输机制将使用SSL,SSL需要密钥和证书才能工作。
解决方法有两种:

一种是启动bin目录下的create-rmi-keystore脚本

另一种是不使用SSL

这里采用第二种

进入bin目录下编辑文件

修改bin目录下的jmeter.properties文件

vim jmeter.properties
server.rmi.ssl.disable=true

设置服务器主机IP
编辑bin目录下的jmeter-server文件,取消RMI_HOST_DEF的注释项,固定设置当前Linux主机查询到的IP。
进入bin目录下编辑文件

启动Jemter服务

修改slave配置并启动jmeter-server
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.224(绑定本机ip)
修改jmeter.properties:
server_port=1009(自定义端口号,避免被占用)
server.rmi.localport=1009(跟上面设置的端口号一致)
server.rmi.port=1099
server.rmi.ssl.disable=true

master机器配置

修改配置文件
打开bin目录下的jmeter.properties文件,修改remote_hosts的值。修改为两台salve机器的ip及端口。

进入到jmeter的配置文件(jmeter.properties)
将server.rmi.ssl.disable的值修改为true
配置remote_hosts(大概270行左右的样子):remote_hosts助攻机器的ip和端口,多个的话用,分隔
mode=Standard去掉注释,在图形界面的时候可以看到助攻机器的执行结果
配置完成后重新启动jmeter,启动jmeter就可以看到运行->远程启动机器,可以看到配置的助攻机器。

添加执行权限:

命令:chmod +x jdk-8u131-linux-x64.rpm

执行rpm进行安装

命令:rpm -ivh jdk-8u131-linux-x64.rpm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷题——二叉树的前序遍历

二叉树的前序遍历_牛客题霸_牛客网 双指针法: /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/ class Solution { public:/*** 代码中的类名、方法名、参…

c89、c99、c11

C99 标准开始引入了 // 单行注释。在此之前,C语言只支持 /* ... */ 多行注释。 具体说明: // 单行注释:在C99标准(ISO/IEC 9899:1999)引入之前,C语言中没有单行注释。C99标准借鉴了C的注释风格&#xff0…

如何在Java中进行单元测试?

如何在Java中进行单元测试? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java中进行单元测试,这是一项确保代码质…

力扣刷题 杨辉三角(使用c++ vector解法)

杨辉三角 题目描述示例1示例2提示:代码 题目描述 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例1 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例2 …

上位机图像处理和嵌入式模块部署(mcu和swd接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但…

基于I2C协议的AHT20温湿度传感器的数据采集

一、I2C总线通信协议 软件I2C 软件I2C,也称为模拟I2C或bit-bang I2C,是一种通过微控制器的通用输入输出(GPIO)引脚来模拟I2C总线通信的方式。它不依赖于专门的硬件I2C接口,而是通过编程控制GPIO引脚的电平状态来实现I…

快去复习吧+++常用算法及参考算法 递推法++穷举法++排序(冒泡、选择)++查找(顺序、折半)++字符串处理++方程求根++无穷级数求和

接上:常用算法及参考算法 (1)累加 (2)累乘 (3)素数 (4)最大公约数 (5)最值问题 (6)迭代法 常用算法及参考算法 7. 递推法…

如何解决Mac电脑不显示以.开头的文件?

Mac电脑默认是不显示以.开头的文件的,今天我一个朋友第一次编译一个vite的项目时,编译成功后发现API的网址都是http://localhost:48080开头,然后跟我吐槽说这个项目有毛病吧?我心想这明显就是没有设置VITE_BASE_URL啊?…

Vue-观察器(watch)的定义方式引发组件初始值没有渲染成功问题(已解决)

问题描述:在测试环境发现一个问题,打开一张表单的时候,所有字段都成功赋上了值,唯独一个人员组件的值(出差人员)没有带出,而接口返回的数据是正常的,也就是说不是后端接口的问题&…

JVM专题七:JVM垃圾回收机制

JVM专题六:JVM的内存模型中,我们介绍了JVM内存主要分哪些区域,这些区域分别是干什么的,同时也举了个例子,在运行过程种各个区域数据是怎样流转的。细心的小伙伴可能发现一个问题,在介绍完方法弹栈以后就没有…

指令微调数据集构建方法

指令微调(Instruction Tuning),是指使用自然语言形式的数据对预训练后的大语言模型进行参数微调,在一些文章中也称为有监督微调(Supervised Fine-tuning,SFT)或多任务提示训练(Multi…

go语言:两协程并发交替打印数字和字母(代码逐行注释)

要求: 并发两协程交替打印数字和字母。一个协程打印数字,一个协程打印字母。 输出: 12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728 思路: 两个 channel 控制两个协程进行交替打印。sync.WaitG…

CARLA自动驾驶模拟器基础

CARLA 使用服务器-客户端架构运行,其中 CARLA 服务器运行模拟并由客户端向其发送指令。客户端代码使用 API 与服务器进行通信。要使用 Python API,您必须通过 PIP 安装该模块: pip3 install carla-simulator # Python 3World and client 客…

【Android面试八股文】你能说一说View中onTouch、onTouchEvent和onClick的执行顺序吗?

文章目录 一、View中onTouch、onTouchEvent和onClick的执行顺序1.1 分析dispatchTouchEvent()1.1.1 执行顺序1.1.2 代码示例1.1.3 总结一、View中onTouch、onTouchEvent和onClick的执行顺序 要了解 onTouch()、onTouchEvent() 和 onClick() 方法的执行顺序,我们需要深入分析 …

React18中各种Hooks用法总结( 内附案例讲解)

React中各种Hooks用法总结 内附案例讲解 一、useState useState 是一个 React Hook,它允许你向组件添加一个 状态变量。 import React, { FC, memo, useState } from react import { MainContainer } from ./style interface IProps {children?: React.ReactNo…

FRP内网穿透及多级代理的使用

目录 0、前言 1、场景介绍 2、环境准备 2.1 下载frp 2.2 配置一台VPS 2.3 socks5客户端 2.5 网络环境准备 3、Frp设置 3.1 一层代理 3.1 二层代理 4、Frp总结 0、前言 FRP是比较老牌的也是比较流行的反向代理、内网穿透软件。FRP用途和使用场景可以看官方文档,…

JavaScript 预编译与执行机制解析

在深入探讨JavaScript预编译与执行机制之前,我们首先需要明确几个基本概念:声明提升、函数执行上下文、全局执行上下文以及调用栈。这些概念共同构成了JavaScript运行时环境的核心组成部分,对于理解代码的执行流程至关重要。本文将围绕这些核…

美团携手HarmonyOS SDK,开启便捷生活新篇章

华为开发者大会(HDC 2024)于6月21日在东莞松山湖拉开序幕,通过一系列精彩纷呈的主题演讲、峰会、专题论坛和互动体验,为开发者们带来了一场知识与技术的盛宴。6月23日,《HarmonyOS开放能力,使能应用原生易用…

如何在Java中实现数据加密与解密?

如何在Java中实现数据加密与解密? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java中实现数据加密与解密,这是保…

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》 《文稿拾零》超厚的一本书(570),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有…