linux环境下使用jmeter进行分布式测试

news2024/11/29 10:57:42

目录

1、前言

2、环境准备

3、分布式配置

总结:


1、前言

熟练使用jmeter进行性能测试的工程师都知道,jmeter的客户端性能是有点差的。这会导致一个问题,其客户端的性能损耗会干扰到性能测试的结果,而且当线程数/并发大到一定程度时,客户端性能会急速下降,导致整个性能测试过程不可控。

比如说我自己这台啵罗啵罗的工作电脑,启动500线程,基本就卡死了。

因此在进行大压力性能测试时,通常的解决方案是使用分布式无界面测试的办法,将一台客户机的压力分布到数台执行机上,避免jmeter客户端的性能损耗。

下面就来详细阐述一下完成分布式压测的过程。

2、环境准备

  • 物理准备

  两台linux centos7服务器

  • jdk安装

  网上有大量的linux安装jdk攻略,此处不再赘述。

  CentOS下个人推荐使用yum安装的方式,方便快捷,而且省去环境配置的痛苦。

  yum search jdk

列出jdk可选安装包如下图所示:

然后选择合适的包安装:

  yum -Y install java-1.8.0-openjdk.x86_64

当然要使用yum命令,可能需要配置YUM源等等,这里就真的不再赘述了。

  • jmeter安装

  这里推荐直接直接将你本地的jmeter客户端打包上传至linux服务器。因为我们编写jmeter测试计划还会在本地进行(因为图形界面比较方便操作),所以更推荐使用跟你本地一样的客户端,以免遇到版本不同所带来的不可预见的一些问题。

  将本地jmeter客户端打成zip文件,上传到服务器目录,如/opt/jmeter(上传路径自由选择)。使用unzip命令进行解压,以我自己用的jmeter客户端为例:

  unzip apache-jmeter-5.0.zip

  当然,请注意unzip命令并非CENTOS默认自带的,也可能需要通过rpm或者yum先安装。

  然后赋予解压后的文件夹完全权限:

  chmod 777 -R apache-jmeter-5.0

然后使用如下命令配置jmeter环境变量:

  export JMETER_HOME=/opt/jmeter/apache-jmeter-5.0
  export PATH=$JMETER_HOME/bin:$PATH
  export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH

并且:

  source /etc/profile

使得配置生效。

这里直接修改/etc/profile文件,将环境变量配置写入到文件最后也是可以的。

配置好了以后,敲入:

  jmeter -v

看到如下信息代表安装配置成功:

3、分布式配置

在至少两台linux服务器上安装好jmeter之后,下一步开始进行分布式的配置,其原理大抵如下图所示:

简而言之,我们将在执行机上启动jmeter-server的这样的一个小型服务,然后使用调度机通过ssl协议访问这一服务并向他发出执行指令和收集结果。

  • 配置执行机

在执行机上编辑jmeter安装目录下的/bin/jmeter.properties配置文件,将:server.rmi.ssl.disable值改为true,代表允许ssl连接。

  # Set this if you don't want to use SSL for RMI
  server.rmi.ssl.disable=true

为避免jmeter-server的端口随机分配,继续修改如下两个值:

  # the following property before starting the server:
  server.rmi.localport=4000

  # RMI port to be used by the server (must start rmiregistry with same port)
  server_port=1099

分别将这两个端口值改为你所想使用的端口号。

配置完毕后,用如下命令启动jmeter server:

  jmeter-server -Djava.rmi.server.hostname=172.16.10.76

TIPS:如果想使用无日志模式,可以改写成如下形式:

  nohup ./jmeter-server -Djava.rmi.server.hostname=172.16.100.76 >>1.txt &

在每一台执行机上完成如上配置并启动。

  • 配置宿主机

同样编辑jmeter安装目录下的/bin/jmeter.properties配置文件,修改如下值,即指定执行机的地址与端口,如有多个以“,”隔开:

  # Remote Hosts - comma delimited
  remote_hosts=127.0.0.1:1099,172.16.100.76:1099
  #remote_hosts=localhost:1099,localhost:2010
  • 执行脚本

在控制机上运行如下命令:

jmeter -n -t test.jmx -R 172.16.100.76,172.16.100.77 -l testReport.jtl 

或者(因为已在宿主机上配置了默认使用的执行机信息)

jmeter -n -t test.jmx -r -l testReport.jtl

其中参数的含义为:

  • n:非gui运行t:指定测试脚本 R:指定多少个 agent 启动并参与测试r: 代表全部 agent 启动并参与测试l:生成测试结果文件

启动后看到开始如下滚屏则表示测试已经运行成功:

  • 查看日志

  在分布式执行过程中,主要的日志可以查看:

  • 执行机上的jmeter-server.log:记录执行过程中的详细信息,与单机执行时的jmeter.log等效执行机的服务日志可以通过nohup命令将其写入外部文件,以便查看测试执行的结果报告可以通过输入到jtl文件进行记录

总结:

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

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家评论区留言333免费领取,千万不要错过哦。

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

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

相关文章

我爱学QT-仿写智能家居界面 上 中 下

学习链接: 仿写一个智能家居界面(上)_哔哩哔哩_bilibili 上 给QT工程添加资源文件 在这里 然后选这个,choose后会有起名,之一千万不能是中文,要不就等报错吧 然后把你要添加的图片托到文件夹下&#xf…

FPGA好找工作吗?薪资待遇怎么样?

FPGA:即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA太…

Codeforces round 883 div3

A. Rudolph and Cut the RopeA. Rudolph and Cut the Rope 题目大意 有 n 个钉子钉在墙上,第 i 个钉子被钉在离地面 ai 米高的位置,一根长度为 bi 米的绳子的一端被绑在它上面。所有钉子都悬挂在不同的高度上。糖果同时被绑在所有绳子的末端&#xff0…

浅谈关于智慧校园安全用电监测系统的设计

0引言 人生人身安全是大家关注的话题,2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起(中国消防2019.12.应急管理部消防救援局官方微博),违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数…

【力扣算法05】之 _1911_ 最大子序列交替和- python

文章目录 问题描述示例 1示例2示例3提示 思路分析代码分析完整代码运行示例代码示例1示例2示例3 完结 问题描述 一个下标从 0 开始的数组的 交替和 定义为 偶数 下标处元素之 和 减去 奇数 下标处元素之 和 。 比方说,数组 [4,2,5,3] 的交替和为 (4 5) - (2 3) 4…

804. n的阶乘

链接: https://www.acwing.com/problem/content/806/ 题目: 输入一个整数 nn,请你编写一个函数,int fact(int n),计算并输出 nn 的阶乘。 输入格式 共一行,包含一个整数 nn。 输出格式 共一行,包…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段,还有一些模糊的概念没有弄懂,请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…

多个input框或其他框的值相加之和并且处理精度问题

需求:实付金额不能手动输入,并且等于购买数量✖优惠价➖平台补贴➖店铺补贴 把需要处理的这几个框绑上change事件等于同一个方法名 change"handleChange" handleChange(value){let _this this;let isNull validatenull;_this.ruleForm.pre…

【JavaEE】项目的部署-让网络上的人都能访问你的网站

项目的部署-让网络上的人都能访问你的网站 文章目录 【JavaEE】项目的部署-让网络上的人都能访问你的网站1. 搭建环境1.1 jdk1.2 Tomcat1.2.1 上传tomcat程序1.2.2 给启动脚本加上可执行权限1.2.3 启动Tomcat1.2.4 让服务器运行8080端口的流量通过 1.3 MySQL 2. 代码修改2.1 修…

协议逆向工程(图

协议逆向工程流程图 协议状态机推断的一般示例 状态机方法时间轴

MySQL的存储引擎、建库、权限管理

目录 一、前言 1.MySQL的介绍 二、存储引擎 1.什么是存储引擎 2.常见存储引擎 2.1.InnoDB(MySQL默认引擎) 2.1.1.四种隔离级别 2.2.MyISAM存储引擎 2.3.Memory存储引擎 3.ACID事务 三、CRUD操作 1.插入数据 2.查询数据 3.修改数据 4.删除数据 四、数据库 1.默认…

自动化测试实践经验和教训

目录 前言: 一、所谓自动化是为了软件发布服务的,并不只是为了测试服务 二、不要事后去计算人工替代率,而是要参考自动化测试有效性 三、度量一个自动化测试的可实施性可以从其可控制性或者可测试性上来考虑 四、试点推进自动化测试 五…

WebDAV之π-Disk派盘 + Koder

Koder 支持WebDAV方式连接π-Disk派盘。 一款可以让你在iPhone、iPad上写各种编程语言代码的app,码农不要错过。 Koder是iPad和iPhone的代码编辑器。它确实具有许多功能,包括语法突出显示,代码段管理器,选项卡式编辑,查找和替换代码,编辑器主题,远程和本地文件连接等…

Java基础---枚举

枚举类型是指由一组固定的常量组成合法的类型Java中由关键字enum来定义一个枚举类型 Java中枚举的好处如下: 1-枚举可以的 valueOf 可以自动对入参进行非法参数的校验 2-可以调用枚举中的方法,相对于普通的常量来说操作性更强 3-枚举实现接口的话&#…

Day_63-65 集成学习之 AdaBoosting

目录 Day_63-65 一. 基本概念介绍 1. 集成学习 2. 弱分类器与强分类器 二. AdaBoosting算法 1. AdaBoosting算法框架介绍 2. AdaBoosting算法过程 三. 代码的实现过程 1. WeightedInstances类 2. 构造弱分类器的StumpClassifier类和抽象类SimpleClassifier 3. 主类Booster的…

Elastic 连续第三年被评为 2023 年 Gartner® Magic Quadrant™ 的 APM 和可观察性远见者

作者:Gagan Singh 我们很高兴地宣布,Elastic 连续第三年被评为 2023 年 Gartner 应用程序性能监控 (APM) 和可观测性魔力象限中的远见者。 Elastic 因其愿景的完整性和执行能力而受到认可 我们相信,Elastic 被认可为远见者,验证了…

自动化测试平台策略之:自动化测试与项目的结合之路

目录 前言: 一、自动化测试开展在整个项目中存在的一些问题 二、自动化测试与项目结合之路 三、自动化测试平台之项目系统建设 前言: 自动化测试平台是实施自动化测试的关键组成部分,它可以帮助测试团队提高测试效率、加速反馈周期&#xff0…

vue 后台返回列表H5点击按钮加载更多分页数据与van-tab记住选中状态

效果图&#xff08;点击更多订单加载&#xff0c;一次加载10条&#xff09;&#xff1a; <template><div id"order" class"wap-el page-container wap-com-page"><section><com-header></com-header></section><di…

6.1Java EE——Spring介绍

一、Spring概述 String框架的核心技术 Spring是由Rod Johnson组织和开发的一个分层的Java SE/EE一站式&#xff08;full-stack&#xff09;轻量级开源框架。它最为核心的理念是IoC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;&#xff0c;其中&…