解锁测试性能瓶颈:深度探讨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 端口

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

主控机器配置,修改 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 版本

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

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

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

  • 环境变量

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

  • HEAP 配置

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

  • CSV 文件

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

    2. 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 脚本文件

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

END今天的分享就到此结束了,点赞关注不迷路!

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

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

相关文章

什么是滚动码?什么工作原理?

一、什么是滚动码? 这里我们将简单了解什么是滚动码及其工作原理。首先简要描述其概念和操作。然后,我们将看一个示例来进一步阐明。最后,我们将研究滚动代码以防止攻击的原因。 滚动码,也称为跳跃码,是远程无钥匙进入…

两整数之和 -- 位运算

个人主页:Lei宝啊 愿所有美好如期而遇 本题链接 力扣(LeetCode) 输入描述 输入两个要相加的数,a和b 输出描述 返回a和b的和,这里其实直接return ab; 直接就过了,但是人题目要求还是给点面子~ 算法…

【mars3d】批量关闭矢量数据的startFlicker()闪烁或者全部关闭startFlicker()

问题 1.graphic/entity/billboard怎么能够批量关闭startFlicker()闪烁或者 全部关闭startFlicker()呢? 相关链接 1.http://mars3d.cn/editor-vue.html?idgraphic/entity/billboard 2.http://mars3d.cn/apidoc.html#FlickerEntity 期望效果 1.graphic.stopFlic…

国图公考:2024年上半年中小学教师资格考试(笔试)报考须知

(一)信息填报时间:2024年1月12日9:00至1月15日16:00 (二)信息确认时间:2024年1月13日9:00至1月16日16:00 (三)网上缴费时间:2024年1月13日9:00至1月17日24:00

宝宝洗衣机哪个牌子质量好?好用的小型洗衣机推荐

当婴儿的到来,确实会给家庭带来许多变化,就好比如对于宝宝相关衣物的清洗需求。对于新生儿及婴幼儿的衣服,一般都要给予特殊的照顾与清洗,以保证不含细菌及过敏原。尤其是刚刚出生的婴儿,这时候宝宝们的皮肤很是幼嫩。…

python实现给定两个列表,“求同存异”

目录 问题描述: 代码实现: 问题描述: 给定两个列表,list1和list2。 python实现求list1和list中重复的元素,以及在list1中,不在list2的元素。 代码实现: def common_unique(pred_list, gold_l…

pyparamvalidate 项目背景和需求分析

目录 一、前置说明1、总体目录2、本节目标 二、项目背景三、需求分析三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、本节目标 阐述 pyparamvalidate 项目背景和需求分析。 二、项目背景…

由浅入深理解C#中的事件

目录 本文较长,给大家提供了目录,可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托,事件的很多部分都与委托…

sql如何获取字段是数组中的数字【搬代码】

我们可以看到表中字段是一个数组怎么获取其中的数据呢? SELECT sim->>$[0] FROM fin_xxx如果使用左外链接,如下,其他连接时一样的 SELECT a.* FROM fin_aaaa a LEFT JOIN fin_xxx b ON b.sim_r->>$[0]a.corr WHERE b.tid20210 …

安全典型配置(六)配置IPSG限制非法主机访问内网案例(静态绑定)

相关文章学习: 安全典型配置(一)使用ACL限制FTP访问权限案例 安全典型配置(二)使用ACL限制用户在特定时间访问特定服务器的权限案例 安全典型配置(三)使用ACL禁止特定用户上网案例安全典型配置…

yolov8人脸识别-脸部关键点检测(代码+原理)

1. 人脸识别: Yolov8可用于人脸识别,它可以识别人脸的位置、大小和角度等信息,并对人脸进行精确的识别。通过使用Yolov8,可以实现高效准确的人脸识别,不仅可以应用于安防领域,也可以应用于人脸支付、人脸门…

x-cmd pkg | gitui - git 终端交互式命令行工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 gitui 由 Stephan D 于 2020 年使用 Rust 语言构建的 git 终端交互式命令行工具,旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x gitui 即可自动下载并使用 在终端运行 eval "$(curl https:/…

open3d连线可视化

目录 写在前面准备代码运行结果参考完 写在前面 1、本文内容 open3d 2、平台/环境 windows10, visual studio 2019 通过cmake构建项目,跨平台通用;open3d 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/135407857…

呼叫 Mac 用户 | Navicat Premium 原生支持在搭载 Apple Silicon 芯片的电脑上使用

作为桌面端数据库管理开发软件,Navicat Premium 与 Navicat for MongoDB 16.3 (或更高版本) 已原生支持搭载 Apple Silicon 芯片的 Mac 电脑上使用。这是一次重要的技术改进,通过原生技术将大幅提升 Mac 用户在使用 Navicat 过程中的响应速度、流畅性以及…

Hex2Bin转换工具文档、Bootloader 、OTA 、STM32等MCU适用

说明:这个工具可以将 Hex 文件 转换为 Bin 格式文件,软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 有兴趣的朋友可留言探讨。 附加功能: 1.另外可以生成指定大小的bin 格式文件,文件多余的空余位置填充随机…

回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测

回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测 目录 回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输…

鸿蒙原生应用/元服务开发-短时任务

概述 应用退至后台一小段时间后,应用进程会被挂起,无法执行对应的任务。如果应用在后台仍需要执行耗时不长的任务,如状态保存等,可以通过本文申请短时任务,扩展应用在后台的运行时间。 约束与限制 申请时机&#xf…

腾讯云跨云迁移工具案例实践:阿里云迁移到腾讯云

对于阿里云批量迁移到腾讯云,HyperMotion可以支持批量一键式安装Agent软件,做到了操作步骤简单化、自动化,可以满足常见源端操作系统类型。 例如:Windows 2003-2019,CentOS、RedHat 6.x-7.x、Ubuntu 14.x - 16.x、SUS…

微服务应用可观测性解决方案介绍

目录 一、可观测性出现背景 二、什么是可观测性(Observability) 2.1 可观测性的不同解析 2.1.1 百度维基解析 2.1.2 IBM解析 2.1.3 CNCF(云原生计算机基金会)组织解析 2.1.4 我的个人理解 2.2 可观测性和监控的区别与联系 …

Python中User-Agent的重要作用及实际应用

摘要: User-Agent是HTTP协议中的一个重要字段,用于标识发送请求的客户端信息。在Python中,User-Agent的作用至关重要,它可以影响网络请求的结果和服务器端的响应。将介绍User-Agent在Python中的重要作用,并结合实际案…