聊一聊,JMeter分布式性能测试!

在做后端服务器性能测试中,我们会经常听到’分布式’。但你是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意?

01. 为什么要使用分布式

做性能测试时,如果被测系统性能比较好,或者系统项目比较大,那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时,发起请求的机器,硬件资源是一定的,不可能配置无限大。

所以,它能发起的并发用户数是有限的,而当我们发起方一台电脑能发起的并发用户数小于我们性能测试期望的并发用户数时,我们就会自然而然想到增加发起方的电脑。增加发起方电脑数量,那么,发起的并发用户数累加,就增大了。

发起方一台电脑,不管是 windows 系统还是 Linux 系统,一般而言,大概能支持 1.5k 左右并发用户,更多并发用户就要采用分布式。

在这里插入图片描述
那么,接下来的问题就是如何配置分布式?

02. 如何配置分布式

助攻机配置,修改 jmeter.properties 文件

首先,我们准备多台机器,作为助攻机器;

然后,检查每台机器上是否安装了 JDK,并且 JDK 版本是否都一致;

然后,在助攻机器上放置相同版本的 jmeter;

接下来,配置 jmeter.properties 文件,

修改 server_port 端口,自定义一个端口

修改 server.rmi.ssl.disable=true

修改 server.rmi.port 端口 ---- 可选

启动服务:jmeter-server -Djava.rmi.server.hostname=ip_address

检查防火墙,关闭或开放 自定义的 server_port 端口

主控机器配置,修改 jmeter.properties 文件

修改 remote_hosts,值为助攻机器 ip

修改,server.rmi.ssl.disable=true

修改, mode=Standard

03. 分布式机配置有哪些注意事项

分布式的配置,是不是很简单呢?

是的,这个配置实际上一点都不难,如果你要自己练手,按照上面的操作,就能很简单配置成功。但是,当你在企业项目中实战时,还会这么简单吗?如果你企业的项目,需要支持大几万的并发,要使用几十台助攻机器,是不是就简单重复上面的操作就可以了呢?

答案是否定的。

现在有几十台 Linux 机器,放在你面前,供你去配置为助攻机。数量比较大,完全无法保证每一台都一模一样,所以,我们先要检查机器配置。

在这里插入图片描述

1、硬件资源

CPU、内存是一台电脑的核心, 几十台机器,我们完全无法保证每一台都一样,在助攻机的要求中,虽然,没有对 CPU 和内存做要求,但是,如果每台机器能提供的资源不一样,那么能产生的并发用户数量肯定也会不相等。

所以,我们需要找出有机器中,最低配置的机器,然后,以最低配置机器为参考配置 jmeter 的堆栈信息。

  • 通过 top 命令,查看下每个系统的 CPU 和内存信息
  • 修改 jmeter 的 bin 文件夹中 jmeter 文件 HEAP:=“-Xms1g -Xmx1g
    -XX:MaxMetaspaceSize=256m” 修改堆栈信息中的大小。
  • 不配置,在执行高并发用户数时,jmeter 可能会出现 OOM 问题

2、系统环境

JDK

机器多了,每台机器的 JDK 大版本是否一致,可能就是个问题。如果,机器上没有安装,哪可以直接去安装指定版本即可,但是,如果助攻机器上已经安装了其他版本的 JDK,并且正运行其他 Java 项目,这个时候怎么办呢?

指定 jmeter 的运行 JDK 版本

  • 下载解压指定 JDK 版本到 Linux 的 /usr/local 文件夹下, 不要去配置改动系统环境变量
  • 在 jmeter 的 jmeter 文件中,添加 JAVA_HOME=/usr/local/jdk版本/ 指定 jmeter 运行的
    JDK 版本,这样,就不用改动操作系统的 JDK,不影响系统中其他 Java 项目

jmeter

jmeter 版本

所有助攻机器上 jmeter 的版本都必须一致。

jmeter.properties 要修改 ssl.disable=true, 端口可以不相同

如果代码中使用了第三方插件,助攻机器上,也必须有这些插件包

环境变量

jmeter 运行,本身可以不配置 JMETER_HOME 环境变量,但是,当机器多了时,还是建议在所有机器上配置 JMETER_HOME 环境变量

HEAP 配置

机器多了,可能每台机器的内存都不一样, 我们期望助攻机器能产生更大的并发用户数,所以,建议修改每台机器的 HEAP 配置信息,设置为相同

CSV 文件

如果写的 jmeter 脚本中,使用了 CSV 数据文件设置,那么文件的路径,请使用相对路径写法。

jmeter-server 助攻服务在哪个路径下启动,就要在所有的机器上,上传 CSV 文件到该路径下的相对位置。

os 操作系统

os 版本:没有要求,可以是不同版本

端口区间:

操作系统的端口数量是有限的,不同系统,默认情况下,打开的端口数量可能不相等,这就需要我们去配置一下每台机器上打开的端口范围。

sysctl -a | grep net.ipv4.ip_local_port_range

这个命令可以查看当前机器上,开启的端口范围

sysctl -w net.ipv4.ip_local_port_range=“1024 65534” 然后再执行 sysctl -p 生效。这样,设置每台机器上,开启的端口范围

sysctl -a | grep net.ipv4.ip_local_port_range

这个命令可以查看当前机器上,开启的端口范围

打开文件数量

操作系统对每个程序能打开的文件数量是有限制的,这个是系统限制,我们可以通过 ulimit -n 看到, 也可以通过 cat /proc/进程id/limit 查看某个进程今天能打开的文件数量限制。

因为性能测试助攻机,也是要发起大量请求的,这有可能要打开大量的文件,如果文件数量限制过小,也会导致问题,所以,我们可以通过 ulimit -n 数量 来修改进程可以打开的文件数量。然后,重启动 jmeter-server 助攻服务,这样,就会以你修改后的数量来做限制了。

时间

助攻机器多了,可能出现每台机器的时间不一样,我们可以通过 date 查看每台机器的时间。

性能测试,期望是在同一时间能发起大量请求,如果,多台机器时间不一致,那么在同一时间,发起的请求数量可能就达不到预期要求,所以,我们需要同步设定每台机器的时间。date -s 时间 来设定系统时间。

网络环境

几十台机器,网络配置可能会不一样,如果这些助攻机器到被测服务器之间的网络存在问题,那么,可能就会导致请求压力上不会,甚至出现网络错误。

我们可以在每台助攻机器上,使用 tracepath 被测服务器 来查看助攻机到被测服务器之间的网络情况。如果发现,网络延迟时间很长,哪就说明,当前机器,可能网络配置有问题。在使用时,可能就要剔除这台助攻机器。

启动服务

在每台助攻机器上执行:jmeter-server -Djava.rmi.server.hostname=ipaddr 因为每台的 ip 地址都不一样,所以,这个命令必须一个一个的敲。同时,我们可以加个’&‘ 符号,把命令转换为后台运行。

在主控机器上执行:java -Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g -jar $JMETER_HOME/bin/ApacheJMeter.jar -n -R xxx:port,xxx:port -t xxx.jmx -l xxxx.jtl -e -o xxdirect

-Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g 这个是设置主控机器 jmeter 的堆栈信息,这个大小,可以根据自己机器的内存大小灵活修改,但是,这个一定要设置的比较大。如果小了,生成报告的时间就会很长。

$JMETER_HOME/bin/ApacheJMeter.jar 为自己的 jmeter 路径

-R xxx:port,xxx:port 指定助攻机器。可以根据自己的需要指定。如果,不需要采用分布式,就不用这一段,如果要用分布式,就要使用这一段,多台时,就用逗号分隔。

-t xxx.jmx 你放在主控机器上的 jmeter 脚本文件

好了,这些注意事项,你都学会了吗?

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

pyqtgraph 实时更新柱状图

import sys import numpy as np from PyQt5.QtWidgets import QApplication, QMainWindow import pyqtgraph as pgclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.plot_widget pg.PlotWidget(title实时更新的柱状图)self.setCentralWidget(self.pl…

C++ //练习 11.22 给定一个map<string, vector<int>>,对此容器的插入一个元素的insert版本,写出其参数类型和返回类型。

C Primer&#xff08;第5版&#xff09; 练习 11.22 练习 11.22 给定一个map<string, vector<int>>&#xff0c;对此容器的插入一个元素的insert版本&#xff0c;写出其参数类型和返回类型。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具…

法向量估计

法向量估计 1. 求解点P法向量的原理2. 法向量估计的证明3. 为什么求点P的法向量&#xff0c;需要使用以P为中心的邻域内的点&#xff1f;4. 法向量估计的应用和思考5. 权重法向量估计 1. 求解点P法向量的原理 已知有一组点 P ( p 1 , p 2 , p 3 , . . . , p n ) , p i ∈ R 3…

算力在现实生活中的多方面应用!

算力在现实生活中的应用是多方面的&#xff0c;它已经成为推动现代社会发展的重要力量。 以下是算力在不同领域中的具体应用&#xff1a; 立即免费体验&#xff1a;https://gpumall.com/login?typeregister&sourcecsdn #分布式云服务#算力#GpuMall#GpuMall智算云#训练#…

零代码与低代码开发平台

1、什么是低代码开发平台&#xff1f;什么是零代码开发平台&#xff1f; 零代码开发平台&#xff1a; 指的是不需要写代码就能够快速开发出业务应用/系统的平台。我们在工作中使用的业务应用&#xff0c;主要提供数据收集、数据处理、数据流转和展示等功能。零代码开发平台能够…

理解vue2中的computed计算属性与缓存机制

vue实例组件初始化过程中&#xff0c;在执行initState(vm)方法初始化状态时&#xff0c;判断options.computed有值时会进行initComputed$1(vm,options.computed)处理 function initState(vm) {let options vm.$options;// 省略props methods data的处理// 处理计算属性comput…

蓝桥杯 【日期统计】【01串的熵】

日期统计 第一遍写的时候会错了题目的意思&#xff0c;我以为是一定要八个整数连在一起构成正确日期&#xff0c;后面发现逻辑明明没有问题但是答案怎么都是错的才发现理解错了题目的意思&#xff0c;题目的意思是按下标顺序组成&#xff0c;意思就是可以不连续&#xff0c;我…

JavaScript的函数基础

目录 前言: 1.函数是什么: 2.函数的基本使用: 2.1 定义函数: 2.2. 调用函数 2.3函数命名规范: 2.3.1由数字、字母、下划线组成&#xff1a; 2.3.2区分大小写&#xff1a; 2.3.3不能数字开头&#xff0c;也不能是关键字&#xff1a; 2.3.4自定义函数纯小写&#xff1a…

set feedback 和set define

set feedback set feedback有三种方式 set feedback on set feedback off set feedback n set feedback on: 打开反馈 默认情况下&#xff0c;当一条 sql 语句执行的时候&#xff0c;oracle 会给一个反馈&#xff0c;比如&#xff1a;创建表的时候&#xff0c;如果成功&#x…

PaddleOCR超大分辨率文本检测代码教程

PaddleOCR超大分辨率文本检测代码教程 目录 1.前提 2.PaddleOCR部署&#xff08;win10下&#xff09; 3.解决思路和代码 1.前提 这是我提的issue&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/issues/11888 很多问题可以看&#xff1a;https://github.com/Paddle…

day22java学习打卡:自定义数组的工具类

//自定义数组的工具类&#xff1a; public class ArrayUtilTest { public static void main(String[] args) { ArrayUtil utilnew ArrayUtil(); int[] arrnew int[] {12,23,56,76,45,9,-98}; int maxutil.getMax(arr); System.…

【操作系统API系统调用】

原理 操作系统的API调用通常在应用程序进程的上下文中执行。当一个应用程序调用操作系统的API时&#xff0c;操作系统会在该应用程序进程的内存空间中分配资源&#xff08;如内存、文件描述符等&#xff09;并执行相应的操作。因此&#xff0c;在调用操作系统API时&#xff0c…

信阳附大医院-市民心中的健康守护者

信阳附大医院,一所集医疗、预防、保健、科研、教学、康复于一体的现代化综合医院,坐落于信阳市工区路600号,是市卫生部门批准成立的医疗机构,更是市民心中的健康守护者. 医院环境优雅,设施先进,服务周到,汇聚了一支技术精湛、经验丰富的医疗团队.医师们以患者为中心,用心倾听,精…

产品经理功法修炼(4)之产品管理

点击下载《产品经理功法修炼(4)之产品管理》 产品经理功法修炼(1)之自我管理 产品经理功法修炼(2)之专业技能 产品经理功法修炼(3)之产品设计 产品经理功法修炼(4)之产品管理 产品经理功法修炼(5)之团队管理 1. 前言 产品经理的能力修炼并非局限于某一技能的…

【UE 网络】DS框架学习路线

目录 0 引言1 如何学习DS框架1. 熟悉Unreal Engine基础2. 学习网络编程基础3. 掌握UE网络概念4. 实践和实验5. 加入社区和论坛6. 官方示例和案例研究7. 专业书籍和在线课程 2 DS框架重要知识点有哪些1. 网络复制2. 远程过程调用&#xff08;RPC&#xff09;3. 客户端服务器架构…

基于单片机16路多路抢答器仿真系统设计

**单片机设计介绍&#xff0c;基于单片机16路多路抢答器仿真系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机16路多路抢答器仿真系统的设计概要主要涵盖硬件设计、软件编程以及功能实现等方面。以下是针对该设计的详细概…

Mac系统Unity团结引擎打包OpenHomeny项目配置

1、团结引擎下载&#xff1a;直接百度下载即可 2、mac版本的DevEco4.0编辑器下载&#xff1a; widthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v4.0/zh-cn/release-notes/OpenHarmony-v4.0-release.md/#%E9%85%8D%E5%A5%97%E5%85%B3%E7%B3%BB3、打开D…

实现RAG:使用LangChain实现图检索查询

你是不是有时会遇到这样的问题&#xff1a;你可能遇到的任何主题或问题&#xff0c;都有大量的文档&#xff0c;但是当尝试将某些内容应用于自己的用途时&#xff0c;突然发现很难找到所需的内容。 在这篇博文中&#xff0c;我们将看一下LangChain是如何实现RAG的&#xff0c;这…

2024年贵州省职业院校技能大赛云计算应用赛项赛题第2套

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…

一次部署,多处运行:Docker容器化开发

一、引言 Docker是一种流行的容器化技术&#xff0c;可用于在多个平台下保持软件运行的一致性、轻松地实现应用程序移植性&#xff0c;以及提高开发、测试、部署和管理过程的效率。Docker容器化开发可以改变传统软件运行、部署、管理与维护的方式&#xff0c;使其更加灵活和高…