JMeter性能分析实战一:日常登录接口

news2024/12/24 10:20:07

负载测试

日常需求:负载测试!

对于桥的负载测试:我给你20t的一排车辆,看你能不能撑得住20t!

对于系统的负载测试:

逐步增加负载,便于问题的发现和定位,不要操之过急。逐步增加负载是这负载测试和压力测试中常见的方法。这种方法有助于观察和评估系统随着负载增加而发生的变化。但是,仅仅因为逐步增加负载,并不意味着你总是在进行负载测试;这同样可以应用于压力测试。

一定要在逐步增加负载的过程中保证除TPS以外其他指标也满足条件,在满足条件的情况之下找到最大的TPS(就是测试系统所能承受的最大吞吐量,可以视为最大负载量的直观体现,如果该TPS也满足指标条件,才能说通过了负载测试。


主流性能测试工具

Loadrunner

优点是详细,且支持IP欺骗,能够更为真实地模拟不同ip用户使用接口的情况。但是,收费!

JMeter

JMeter有九大元件

前置处理/后置处理:相对于取样器,也就是相对于发出的请求!发请求之前需要对请求参数做处理,发请求后需要对响应结果进行提取。


编写性能脚本

基础练习

在我们之前使用JMeter进行接口测试中,我们使用的是POST请求中的form表单格式,所以才能直接在参数列表中添加,这个和GET使用方法一样,但只是POST的使用情况之一。

请求头设置不是必须的,按照实际情况设置。

注意当使用POST请求传递form表单格式的时候,不能仅仅看到请求返回200就认为是正确的,我们需要查看请求头和请求体,尤其是请求头的Content-type是不是form表单格式:

作者检查了一下,发现自己真的做错了(注意检查请求的Request Headers,作者一开始检查的是相应数据,真傻x,浪费时间):

这个请求头是很重要的,因为它告诉服务器如何解析接收到的数据错误的Content-Type头可能会导致服务器无法正确解析数据,从而导致错误或未预期的行为。

所以,在JMeter中,确保设置正确的Content-Type头是很重要的,以模拟真实的用户交互和避免潜在的问题。我们可以添加HTTP信息头管理器,以正确规定信息头的值:

成功:


JSON断言

响应断言

更为全面,能够对任意格式的响应结果进行断言,相应地,真™麻烦:

1. 忽略状态:不让jmeter自动化测试。为什么要有这个选项呢?因为我们有时候就是要测试状态码为4xx或者5xx时的信息。如果默认让jmeter自动测试,则jmeter会自动将状态码作为断言判断的一部分,直接报错不看后面的内容,就没有任何意义了。

2. 如果有多个预期结果,且在模式匹配中勾选“或“选项,则满足任意一个结果就行;否则所有结果必须同时满足!

其实编写性能脚本就是设置线程组、HTTP请求等等组件,组件再搞一些元件,详情请见黑马相关视频。


端口配置

课上那些ip端口不适用于本地程序,所以读者就本地Springboot程序介绍一下端口配置。作者的应用正在本地的8085端口上运行,并且希望使用JMeter的PerfMon插件来收集其性能指标。

首先,我们需要了解PerfMon插件的工作原理:

  1. PerfMon Server Agent:它是一个独立的进程,需要在你想要监控的服务器上运行。它会收集性能指标并发送给请求它的JMeter客户端。
  2. PerfMon Metrics Collector in JMeter:这是JMeter中的一个Listener,它连接到PerfMon Server Agent并请求性能指标。

我们需要在同一台机器上运行Springboot应用、PerfMon Server Agent和JMeter。

下面是步骤:

  1. 启动应用:确保应用正在本地的8085端口上运行。

  2. 启动PerfMon Server Agent:选择一个不同于8085的端口运行PerfMon Server Agent,例如4444。这是默认的,你可以使用startAgent.bat直接启动它。注意,一定是不同于8085的端口,因为,我们startAgent.bat配置的或者是它默认的端口,都是它自己的端口,不是它监听的端口,是它自己的端口啊!所以一旦它也选择Springboot项目的端口,就会产生端口重用的问题!

  3. 配置JMeter

    • 打开JMeter。

    • 添加你的线程组和HTTP请求sampler等。

    • 添加PerfMon Metrics Collector listener到你的测试计划。

    • 在PerfMon Metrics Collector的配置中:

      • Server IP or Hostname:输入localhost
      • Server Port:输入PerfMon Server Agent的端口,例如4444。这个端口号一定要与startAgent.bat配置的端口号相同,二者才能连接。
      • 选择你想要监控的指标,例如CPU, Memory等。
  4. 运行JMeter测试:当JMeter测试运行时,PerfMon Metrics Collector会从本地的PerfMon Server Agent收集指标,并在JMeter中显示。

注意:应用使用8085,PerfMon默认使用4444。除非你有特定的需求,否则通常不需要改变这些默认设置。作者设置的是4445端口,简而言之,如下图:

插件用的全是插件的端口,4444是默认值;JMeter的HTTP请求还是请求的本地Springboot的ip和端口:localhost和8085。


实践感悟

作者昨天晚上开始学习,看起来很简单的过程,心态崩了好几次,今天早上才做完。目标是性能测试中实现下图:

作者之前写了一个简单的Springboot加密解密的本地程序信息安全第三周_Joy T的博客-CSDN博客,想着为之后本地程序接口测试、性能测试练习一下,但是遇到了很多错误,在本篇,作者将错误和注意事项讲一下,具体实现过程建议听老师的课。(作者使用的是windows的本地程序)

1.JAVA版本

这是最槽蛋的,为了实现上图,需要安装插件:

但是,这个插件只是用来收集性能监听数据的,重点还是要在服务器上部署一个叫做ServerAgent-2.2.3的监听程序,通过startAgent.bat文件打开。这两个文件是一切槽蛋的来源!大多数人都会发现这个.bat文件打开之后闪退,其实就是JAVA版本的问题,没有别的原因!

™这个2.2.3的文件,不适合现在高级的JAVA版本,甚至作者从JAVA17开始退到11,再从11退到8都不行,JAVA8都不行啊读者朋友们!

巨离谱,这里的解决方法是下载一个1.8的JRE。请参考这篇文章:Jmeter一点击运行ServerAgent就闪退关闭退出问题的解决 - blazerrr - 博客园 (cnblogs.com)

这里唯一一点那位高人没讲的,就是在JRE/bin下运行时,不能直接照抄startAgent.bat文件的第二行,因为存在语法错误!

一定要把后面的%*去掉才能够在JRE下运行,否则会报错:

如果不是这个提示,而是:

那就是CMDRunner.jar的位置没搞好,一定是这个原因,其他原因不用找了。..\..\不能有间隔!

这个错误来自于作者想投机取巧直接把CMDRunner.jar放在JRE/bin下,但是,它的运行需要找其所在目录的文件,使用这个命令的话,其所在目录是JRE/bin而不是ServerAgent-2.2.3文件夹,所以找不到那些文件,无法打开。

2.不要着急

作者看网上的帖子,无一不是查找了很久很久才配置好的,所以大家遇到麻烦一定不要灰心,不就是版本不对吗,重新搞不就行了!

一定不要烦,哦对了,JAVA还有一点就是,你在卸载JDK的时候,一定不能只卸载表面的安装文件夹,它会有残留文件,这些残留文件百分之九十九都会造成后面的安装或者使用错误!一定要找到电脑系统中的程序,把带JAVA的那种空白的看不出来是啥的那些残留文件全删的干干净净。

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

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

相关文章

由Long类型引发的生产事故

事情原由 今天测试忽然在群里发了一个看似非常简单的线上问题,具体是:在后台通过订单编号(orderId)修改订单信息时,修改不成功 ,修改前后的订单数据完全没有发生变化。第一眼看到这个问题的时候,我心想后台实现逻辑并不…

CSS 语法

CSS 实例 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性(property)是您希望设置的样式属性(style attribute&#x…

监狱劳动工具管理系统|智工具DW-S308的功能

监狱劳动工具管理系统(智工具DW-S308)是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对工具进行统一管理、分析的信息化、智能化、规范化的系统。 目前监狱的劳动工具管理很多还停留在固定工位,人盯人、人管人等落后的管理模式&#xff…

图谱滤波(Graph Spectral Processing)-1

时域和空域信号的滤波是图像处理的基本技术之一,迄今已得到广泛的研究。Graph Spectral Processing(GSP)可以处理不规则结构的信号,这些信号在数学上用图形表示。利用谱图理论研究了图信号滤波的理论和方法。在图像处理中,图是表示像素形成的…

华为云云耀云服务器L实例评测|RabbitMQ的Docker版本安装 + 延迟插件安装 QQ邮箱和阿里云短信验证码的主题模式发送

前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍RabbitMQ的Docker版本安装和配置,延迟插件的安装;结合QQ邮箱和阿里云短信验证码…

Gurobi设置初始可行解

目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start:MIP变量的起始值(初值)double类型,可更改 1.2 StartNodeLimit:限制了在完善一组输入部分变量的初始解时,MIP所探索的分支定界的节点的数量 …

SAAS软件营销——利用人工智能帮助企业了解客户

软件营销部队(Salesforce)是全球领先的客户关系管理(CRM)解决方案供应商之一,其产品和服务旨在帮助企业成长,并追踪与客户的关系。 在1999 年成立时,它就率先提出了通过互联网(现在通常称为“云”)实现“软件即服务”(SaaS)的概念。 SaaS提…

周期性触发的自定义触发器

背景 本文我们实现一个周期性触发的自定义触发器,顺便看下实现自定义触发器的一些要点 周期性触发器实现 实现一个每分钟触发一次的自定义事件时间触发器,实现代码和注意事项如下所示 package wikiedits.trigger;import org.apache.flink.api.common…

线程通信初始

简单认识一下线程通信 目录 简单认识一下线程通信线程通信定义线程通信模型之一释疑示例案例案例要求案例简单实现 拓展等待和唤醒API 参考视频 注:线程通信 前提是 线程安全 线程通信定义 当多个线程共同操作共享的资源时,线程间通过某种方式互相告知自…

【算法训练-二分查找 三】【特殊二分】寻找峰值

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【数组的二分查找】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为…

Vue3+TS+ECharts5实现中国地图数据信息显示

1.引言 最近在做一个管理系统,主要技术栈使用的是Vue3TSViteElementPlus,主要参考项目是yudao-ui-admin-vue3,其中用到ECharts5做数字大屏,展示中国地图相关信息,以此基础做一个分享,写下这篇文章。 &quo…

解决ASP.NET Core的中间件无法读取Response.Body的问题

概要 本文主要介绍如何在ASP.NET Core的中间件中,读取Response.Body的方法,以便于我们实现更多的定制化开发。本文介绍的方法适用于.Net 3.1 和 .Net 6。 代码和实现 现象解释 首先我们尝试在自定义中间件中直接读取Response.Body,代码如…

Appleid苹果账号自动解锁改密(自动解锁二验改密码)

目前该项目能实现以下功能: 多用户使用,权限控制多账号管理账号分享页,支持设置密码、有效期、自定义HTML内容自动解锁与关闭二步验证自动/定时修改密码自动删除Apple ID中的设备代理池与Selenium集群,提高解锁成功率允许手动触发…

先输入列,再输入行

想要的表格行数和列数是 5 行 5 列,以下是相应的代码实现: # 定义表格行数和列数 rows 5 cols 5# 创建一个二维列表作为表格 table [[ for j in range(cols)] for i in range(rows)]print("请输入表格数据:")while True:# 获取…

Python无废话-办公自动化Excel读取操作

openpyxl模块介绍 openpyxl是一个用于处理Excel文件的Python库,用于读取/写入Excel2010 xlsx/xlsm/xltx/xltm文件(不支持xls格式)。通过使用openpyxl库,可 以轻松地在Python程序中实现对Excel文件的操作。 openpyxl 安装 方式1:使用pip 命令安装&…

操作系统学习笔记1

文章目录 1、OS的一个宏观比喻2、OS的目的和功能3、OS的发展4、OS的运行机制5、OS的特征6、OS的体系结构 参考视频:操作系统 1、OS的一个宏观比喻 2、OS的目的和功能 3、OS的发展 4、OS的运行机制 中断、系统调用、异常。 5、OS的特征 6、OS的体系结构

【逐步剖C++】-第二章-C++类和对象(下)

前言:本文是对类和对象知识点的最后一篇总结,前两篇的链接如下: 【逐步剖C】-第二章-C类和对象(上) 【逐步剖C】-第二章-C类和对象(中) 这三篇加起来就是笔者学习在类和对象中的所有总结了&…

计算机网络网络层、应用层、数据链路层协议详解

目录 一、计算机网络 二、网络层 三、应用层 四、数据链路层 一、计算机网络 计算机网络是将多台计算机和其他网络设备通过通信链路连接起来,以实现数据交换和资源共享的系统。它是现代信息社会的基础设施之一,为人们提供了快速、可靠、安全的数据传…

学校项目培训之Carla仿真平台之Carla学习内容

一、Blender Blender入门:https://www.bilibili.com/video/BV1fb4y1e7PD/ Blender导入骨骼:https://www.bilibili.com/video/BV1hc41157nL 做一个车:https://www.bilibili.com/video/BV1hY411q7w2 二、Roadrunner RoadRunner Scenario…

Flink状态管理与检查点机制

1.状态分类 相对于其他流计算框架,Flink 一个比较重要的特性就是其支持有状态计算。即你可以将中间的计算结果进行保存,并提供给后续的计算使用: 具体而言,Flink 又将状态 (State) 分为 Keyed State 与 Operator State: 1.1 算子状态 算子状态 (Operator State):顾名思义…