jmeter进行性能测试_使用JMeter进行性能测试

jmeter进行性能测试

在开发复杂的高可用性软件项目时,性能至关重要。 在当今这样的时代尤其如此,除了闪电般的实时数据可访问性之外,其他任何事情都受到惩罚。 当谈论有时需要的大量数据时,这并非总是一件容易的事。

在本文中,我们将使用在线预订引擎作为指导示例。 所有数据均来自单个API。 我们将映射预期的瓶颈,在预期的负载上设置实际方案,并自动执行所有这些操作,以便我们可以始终检查性能。 我们将使用JMeter和BlazeMeter进行此操作。

分析

API上的所有负载可以归为以下三类之一。 我们的预订引擎提供了API调用。 然后,自动化作业会对我们的系统资源产生影响。 这些也由API端点触发。 最后,我们来看API调用,它独立于预订引擎对服务器征税。 换句话说,重要的是要绘制出影响服务器资源的所有因素的图表,因为负责负载的不仅仅是预订引擎。

我们使用Google Analytics(分析)来检查每个API方法当前的页面浏览量。 一年中最繁忙的一天是负载的基础。 如果您期望一定数量的增长,则可以始终将其乘以某个特定因素。 我们还将研究一方面预订引擎与自动任务之间的API调用与其他调用之间的划分。 最好在一年中完成此操作。 所有这些的结果应类似于以下内容:

API调用 百分比 部分
/可用天数 5k 31% 预订引擎
/可用-小时 4k 15% 预订引擎
/重新计算事件 1千 16% 任务
/获取员工 2k 5% 其他

杰米特

我们使用JMeter编写性能测试。 为了从这些数据创建现实的JMeter场景,我们使用了两个附加插件:

  • 加权开关控制器 ,以获取必要的请求。
  • 随机CSV数据集 ,可将CSV列表中的随机参数用于API调用。

最后,该场景如下所示:

该场景中包含三个重复部分。 一些重要方面:

1.使用Random CSV Data Set插件加载随机餐厅ID,以创建不同餐厅的API请求。
2.通过引擎完成预订包含几个连续的步骤。 我们使用来自CSV集合的随机数据和JMeter函数调用这些步骤:

正则表达式提取器将API响应保存在变量中,以用于后续步骤:

3. IF控制器确保仅在满足特定条件时才开始后续步骤。 如果没有,JMeter将开始下一个测试周期,在此我们检查所给随机数据的可用性。 Jexl2表达式用于检查变量是否不为null:

4.在最后一步中,我们使用Response Assertion来检查响应。 如果它不包含“成功”一词,则JMeter进入下一个测试周期:

5.加权开关控制器用于以加权平均值启动自动化任务和其他API调用。 为此,我们使用分析中的百分比。

每个组需要一定数量的用户。 根据您的分析和预期的负载,选择一个有意义的数量。

烈焰仪

BlazeMeter是运行JMeter测试的好工具。 上传方案,插件和数据CSV之后,您可以使用并发用户数量,完成时间和启动时间来配置负载。 最重要的因素是用户数量。 根据JMeter中设置的用户数量,此金额将平均分配给不同的组。 该数量应至少产生您的预期负载。 最后,BlazeMeter还允许您选择流量来源。 它的免费计划允许您每周运行一个这样的计划。

还可以根据您的KPI选择失败条件:

BlazeMeter允许与不同的监视和CI工具集成。 我们自己使用竹子。 有Bamboo插件和全面的指南可帮助您进行集成 。

这样,您可以每周运行一次自动化性能测试(如果升级BlazeMeter订阅,则运行频率会更高)。 这些测试会生成报告,其中包含每个请求的响应和错误的详细概述。

结论

正确进行分析可能是编写性能测试中最重要的部分。 这意味着不仅要从应用程序本身获取预期的负载,还要从其他API调用和影响性能的其他任务中获取负载。 该数据用于创建JMeter场景。 随机数据和加权控制器插件在这里有很大的帮助。 BlazeMeter使您可以运行这些方案并创建直观的报告,以帮助您发现瓶颈和问题。 与您的CI系统集成是一个福音。

性能测试是非常宝贵的工具。 JMeter与BlazeMeter的结合使我们能够定期且始终如一地清除瓶颈和问题。 因此,每个构建都将尽快完成。

翻译自: https://www.javacodegeeks.com/2019/10/performance-testing-with-jmeter.html

jmeter进行性能测试

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

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

相关文章

java泛型程序设计——约束与局限性

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 约束与局限性 的知识; 【1】 不能用基本类型实例化类型参数 1.1)不能用类型参数代替基本类型, 因此,没有 Pa…

python简单菜单_创建一个简单的python菜单

修正和评论,它们主要是语法错误。menulist 1. Print the list,2. Add a name to the list,3. Remove a name from the list,4. Change an item in the list,9. Quit #assuming you want to display menulist, having it as a tuple is uselesslst("johny"…

郎溪 溪流_到无限(溪流)和超越!

郎溪 溪流Java允许您处理集合或流中的数据。 将流视为将一个集合转换为另一个集合的技术非常容易。 这可能会导致一些相当随意的代码,其中流数据被重复收集到某种类型的集合中,作为一个整体集合传递,然后再进行更多处理。 对于6个元素&#…

java泛型程序设计——Varargs 警告+不能实例化类型变量

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 Varargs 警告不能实例化类型变量 的知识; 【1】 Varargs 警告 1.1)一个相关问题: 向参数个数可变的方法传递一个泛型类型…

rabbitmq怎么停止_Windows环境下RabbitMQ的启动和停止命令

Windows环境下RabbitMQ的启动和停止命令原创lockie_zou 最后发布于2018-05-24 15:34:21 阅读数 36514 收藏展开首先windows下安装好了erlang和rabbitmq。如下地址同时下载和安装:Erlang:http://www.erlang.org/download.htmlRabbitMQ :http:…

elk入门_ELK堆栈入门

elk入门朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证,管理和保护。 好的设计原则要求微服务架构是可观察的,并提供集中的监视工具。 该工具使开…

java泛型程序设计——泛型类的静态上下文中类型变量无效+不能抛出或捕获泛型类的实例

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 泛型类的静态上下文中类型变量无效不能抛出或捕获泛型类的实例 的知识; 【1】泛型类的静态上下文中类型变量无效 1.1)不能在静态域或…

android ril.java_Android RIL学习

1.Android RIL概念Android RIL是基于telephony服务和raido硬件层的抽象层。Android的rild库是介于HAL接口与baseband modem之间,它提供了语音、数据、短信、SIM卡管理以及STK应用的功能。它把标准的GSM27.007中常用的如dial这些做主动请求的操作称之为request&#…

netty java_Netty Java快速指南

netty java使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 Netty是一个无阻塞输入/输出(NIO)框架,它使开发低级网络服务器和客户端…

java泛型程序设计——注意擦除后的冲突

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 注意擦除后的冲突 的知识; 1.1)当泛型类型被 擦除时, 无法创建引发冲突的条件。 1.1.1)看个荔枝&#xff…

java的Swing里怎么new一条线_java – 在JFrame上绘制一条线

我正在尝试使用图形2D绘制一条线,但然后该线出现在所有的线上JFrame中的其他组件因此使它们不可见.我该如何解决这个问题?这是代码:import javax.swing.*;import java.awt.*;import java.awt.geom.*;class Success extends JFrame{public Success(){JPan…

java –cp_Java –缺少字体–崩溃的应用程序!

java –cpEclipse MAT和Heaphero都是分析大型堆转储的流行Java工具。 最近,当我们尝试在Eclipse MAT中分析堆转储文件时遇到了一个有趣的问题。 工具因缺少字体crash而崩溃。 我们认为我们将与您分享发现的结果。 CompositeStrike.getStrikeForSlot(&am…

java泛型程序设计——泛型类型的继承原则

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 泛型类型的继承原则 的知识; 【1】泛型类型的继承原则相关 1.1)考虑一个类 Employee 和一个Employee子类 Manger , 问&a…

用java代码写美国时间_如何衡量Java代码所用的时间?

本问题已经有最佳答案,请猛点这里访问。我需要分析Java中的一些算法的复杂性。为此,我计划提供大量的输入,并测量Java实现所花费的时间。检查某些代码行之间的时间最精确和准确的方法是什么?我需要精确到毫秒…不完全是&#xff0…

reactor使用方法_Project Reactor展开方法

reactor使用方法最近,我的一位同事向我介绍了Project Reactor类型的expand运算符,在这篇文章中,我想介绍几种使用它的方式。 展开分页结果 考虑在名为City的模型上基于Spring Data的存储库: import org.springframework.data.jpa…

java泛型程序设计——通配符类型+通配符的超类型限定

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 通配符类型通配符的超类型限定 的知识&#xff1b; 【1】通配符类型相关 1.1&#xff09;通配符类型&#xff1a; Pair < ? extends Employee> 表示…

java 延迟初始化_Java并发编程——延迟初始化占位类模式

——仅作笔记使用&#xff0c;内容多摘自《java并发编程实战》在并发编程中&#xff0c;如果状态变量仅在单个线程中初始化和使用&#xff0c;自然是线程安全的&#xff0c;但一旦涉及到线程间的数据交互&#xff0c;如何声明一个用于多线程的单例状态变量才是安全的呢&#xf…

log4j 程序日志_Log4j错误–减慢您的应用程序

log4j 程序日志最近&#xff0c;我们正在对流行的SaaS应用程序进行故障排除。 该应用程序间歇性地变慢。 要从问题中恢复&#xff0c;必须重新启动应用程序。 在高流量期间&#xff0c;此应用有时会变慢。 有时在交通繁忙时也是如此。 没有凝聚力模式。 这类应用程序变慢并重新…

java泛型程序设计——无限定通配符+通配符捕获

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java泛型程序设计 的 无限定通配符通配符捕获 的相关知识&#xff1b; 【1】无限定通配符相关 1.1&#xff09;无限定通配符&#xff1a; 如Pair< ?>&#xff1b; 1.1.1…

java方法2数据求和_Leet Code 2 Add Two Numbers - 链表表示的两个数求和 - Java

给定两个链表表示的非负整数&#xff0c;每个节点存储一位数&#xff0c;各位数以逆序存储。将两个数相加&#xff0c;以链表形式返回结果。例如&#xff1a;输入&#xff1a;(2 -> 4 -> 3) (5 -> 6 -> 4)输出&#xff1a;7 -> 0 -> 8/*** Definition for s…