Jmeter的压测使用
Jmeter基础功能回顾
一、创建Jmeter脚本
1、录制新建
(1)适用群体:初学者
2、手动创建
(1)需要了解Jmeter的常用组件
元件:多个类似功能组件的容器(类似于类)

各元件作用
组件:实现独立的某个功能(类似于方法)

组件示例
二、接口压力测试请求的创建
压测前需要保证接口的功能是正确的,压测才是有效的。
接口常用请求方式:
- 1、post
- 2、get
- 3、put
- 4、delete

取样器
三、压力测试请求中的数据传递
在接口请求的过程中,接口之间会有数据传递的功能。例如:系统登录的功能,请求登录的接口,一般给返回给用户一个token的字段,token会有有效期,在有效期内,用户所有的请求带上这个token字段,服务器 就会知道是哪一个用户做的请求。

关联:
当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。
Jmeter常用的关联方法:
1、JSON提取器

JSON提取器
2、XPATH提取器

XPATH提取器
3、正则表达式提取器

正则表达式提取器
四、压力测试中的结果断言校验
断言:让程序自动判断预期结果和实际结果是否一致。
Jmeter常用断言:
1、Response Assertion


2、JSON Assertion

五、利用Beanshell生成测试数据
1、Beanshell script逻辑生成数据

2、Java代码逻辑生成数据

六、全局变量与CSV数据导入
1、User Defined Variables

2、CSV Data Set

七、压测结果数据解读
1、聚合报告

2、请求/响应结果树

3、Debug Sampler

被压测实战应用简介与搭建
一、实战应用简介
1、被压测应用:订餐网(模拟电商应用)
2、常见业务场景:登录,浏览,选择餐馆,添加购物车,下订单,订单浏览,...,等
3、目标:通过对该网站的压测,学习、体会实际业务场景中压测工具的使用方法
4、练习项目源码位置:https://github.com/princeqjzh/meican
5、运行环境:Java+mysql+maven
6、说明:例子程序中部分功能做了mock,使用的时候不用关注例子程序返回数据的正确性
二、实战应用设置与启动
1、例子程序启动过程:
(1)将git源码克隆到本地磁盘
(2)将项目中的sql/e_menu.sql导入MySQL数据库,创建项目数据
(3)在src/main/resources/hibernate.cfg.xml中配置MySQL DB的用户名、密码;
(4)项目编译、构建
(5)启动、运行Web应用程序
三、实战应用设置-MySQL
1、使用MySQL客户端工具(navicate),初始化数据库
2、执行SQL语句导入功能,运行项目中的e_menu.sql语句
3、Demo-数据导入

导入SQL数据

导入成功
四、实战应用设置-Java
1、Java配置:版本1.8
2、安装包
下载路径:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
3、命令安装
CentOS:yum install java-1.8.0-openjdk* -y
Ubuntu:apt-get install oracle-java8-installer
Mac:brew cask install java
4、解压安装
(1)将JDK运行程序直接解压缩到本地路径,然后配置环境变量
(2)JAVA_HOME=<jdk root path>
(3)export PATH=$PATH:$JAVA_HOME/bin
5、Java环境安装正确验证

验证Java是否安装成功
五、实战应用设置-Maven
1、Maven:下载依赖与程序编译、打包、运行
2、下载:
(1)下载位置:http://maven.apache.org/download.cgi
(2)下载文件:zip或者tar格式压缩包,带bin字样的表明是可以直接运行的二进制文件

下载
3、Maven安装和环境变量配置
(1)将安装包解压到本地路径,然后配置环境变量
(2)export M2_HOME=/xxx/xxx/apache-maven-x.x.x
(3)export PATH=$PATH:$M2_HOME/bin
4、验证Maven是否安装成功:
(1)mvn -v

5、 加速依赖包下载方法,在setting.xml中提那家阿里云镜像
<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>

五、实战应用设置-开发工具(自行选择)
1、开发工具 Intellij Idea:
(1)外观、字体修改
(2)启动鼠标滚轮放大缩小字体
(3)隐藏显示一些可以不看的文件或文件夹,比如:target
六、实战应用设置-参数
1、配置应用中的数据库连接信息:host,port,user,password
2、参数设定位置:src/main/resources/hibernate.cfg.xml
3、配置参数
<property name="connection.url">
jdbc:mysql://localhost:3306/e_menu?serverTimezone=GMT
</property>
<property name="connection.username">root</property>
<property name="connection.password">ymx0607!</property>
七、实战应用-启动项目
1、编译

若编译后无run configurations,
2、启动项目:

若编译后无run configurations,选择方法二、三
(方法一)双击上图选中的e_menu,就可启动项目
(方法二)命令行运行
mvn tomcat7:run

(方法三)直接把编译后的e_menu.war 放到之前装好的tomcat的webapps目录下

3、访问:http://localhost:8080/e_menu/userlogin/login.jsp(默认密码:admin admin)


压测脚本的编写
一、压测业务规划
1、梳理常用业务场景
2、尽量真实的模拟用户行为,让压测结果更贴近真实结果
3、正常与异常用例场景都需要被覆盖到
4、压力测试涉及的业务内容:
(1)首页
(2)登录
(3)浏览饭店列表
(4)选择饭店
(5)添加购物车
(6)提交订单
(7)查看订单
5、业务场景规划
正常:登录成功的场景
异常:登录失败的场景

二、编写前准备:
1、被压测页面URL获取方法
(1)问研发(依赖别人)
(2)抓包(依赖自己)
(3)读代码(主要依赖自己)
2、组织测试业务参数
(1)新建用户(添加数据)
(2)梳理测试商户数据
(3)梳理测试商品数据
3、也测业务流程控制
(1)预计接口访问次数
(2)不同接口的分流比例
(3)数据传递位置(参数?响应payload?Header?Cookie?)
三、编写压测脚本
1、抓包获取压测接口

四、压测流程图

五、构造压测脚本
注意:
1、先安装插件:Random CSV Data Set
2、脚本在项目jmx下

脚本
整体设计思路:
1、有两个场景:登录成功、登录失败,基于对业务的了解,做了分配的数据。分配的比例,是通过rate随机变量去设置的。假设:60%登录成功,40%登录失败。


2、选择饭店是随机循环的,通过循环控制器实现,访问1次或多次

3、公共信息放在用户定义的变量中,菜品信息放在Http Cookie管理器
4、查看结果树和聚合报告查看运行结果
压测实施简介与后续安排
一、压测实施
1、制定压测策略,不同的并发数10,15,20,25,30...
2、记录结果
3、测试期望结果
(1)验证能够支撑多大并发数,峰值数
(2)验证错误率,定义可接受范围,<=0.1% or <=0.5% or must=0%
4、验证压测目的:寻找系统性能点

二、后续安排
1、压测具体操作过程
2、实施过程可以配合性能监控平台进行压测监控
3、自动化压测执行并发数的压测实施
4、测试报告的自动生成
思考
怎么计算单机所能做出的最大并发数呢?
怎么合理进行压测数据?怎么分时段进行压测?
相关文章:
Jmeter的压测使用
Jmeter基础功能回顾 一、创建Jmeter脚本 1、录制新建 (1)适用群体:初学者 2、手动创建 (1)需要了解Jmeter的常用组件 元件:多个类似功能组件的容器(类似于类) 各元件作用 组件…...
kubernetes》》k8s》》Deployment》》ClusterIP、LoadBalancer、Ingress 内部访问、外边访问
Nginx部署 K8s 集群内外访问服务的方式 节点 Kubernetes 集群中的服务器(指单台) 集群 Kubernetes 管理的一组服务器的集合 边界路由器 为局域网和Internet路由数据包的路由器,执行防火墙保护局域网络 集群网络 遵循Kubernetes网络模型实现集…...
Transformer 通关秘籍8:词向量如何表示近义词?
上一节已经完成了 token 到词向量的转换。那么,使用转换后的词嵌入向量便可以表示 token 之间的语义了吗?便可以表示两个单词是否是近义词,是否是反义词了吗? 是的。 接下来先通过一个例子,来直观地理解一下词嵌入向…...
Vue + Scss项目中实现自定义颜色主题的动态切换
当时面试的时候遇到面试官问的一个问题如何实现自定义颜色主题切换,当时我做的只是elementUIPlus提供的暗黑和默认主题切换 theme.scss // 增加自定义主题类型 $themes: (light: (/* 原有配置保持不变 */),dark: (/* 原有配置保持不变 */),custom: () // 空映射…...
搭建qemu环境
1.安装qemu apt install qemu-system2.编译内核 设置gcc软链接sudo ln -s arm-linux-gnueabihf-gcc arm-linux-gccsudo ln -s arm-linux-gnueabihf-ld arm-linux-ldsudo ln -s arm-linux-gnueabihf-nm arm-linux-nmsudo ln -s arm-linux-gnueabihf-objcopy arm-linux-objc…...
【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】
MVC简介 产生原因: MVC(Model-View-Controller)模式诞生于20世纪70年代,由Trygve Reenskaug在施乐帕克研究中心(Xerox PARC)为Smalltalk语言设计,目的是解决图形用户界面(GUI&…...
基于NebulaGraph构建省市区乡镇街道知识图谱(二)
上次我们有讲到构建知识图谱,但是在实际使用的时候会发现某些乡镇街道丢失的问题,因为VID必须全局唯一,覆盖导致原因,另外在全国大批量导入时速度非常慢,为此,我们重新优化表结构与导入语法。 1. 表及索引…...
论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)
转载至:何骏昊 开放知识图谱 原文地址:论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024) 笔记整理:何骏昊,东南大学硕士,研究方向为语义解析 论文链接ÿ…...
线性规划工具推荐篇 开源+商用 按需取用
一、开源免费工具 1. GLPK (GNU Linear Programming Kit) 特点: 支持线性规划(LP)、混合整数规划(MIP)使用MathProg语言建模,可通过glpsol命令行求解适合中小规模问题,性能低于商业求解器 适用…...
linux -- php 扩展之xlswriter
xlswriter - PHP 最强性能 Excel 扩展 linux 安装 完整编译安装步骤 ## 下载wget https://pecl.php.net/get/xlswriter tar -zxvf xlswriter cd xlswriterphpize # 执行配置 ./configure # 编译 make make install ./configure 如果报错,就指定配置路径 …...
Dockerfile文件构建镜像Anaconda+Python教程
文章目录 前言Dockerfile 核心模块解析**一、Dockerfile基础镜像选择二、系统基础配置1、时区设置2、镜像源替换 三、系统依赖安装四、复制本地文件五、指定路径六、Anaconda环境配置1、anaconda环境安装2、配置虚拟环境3、创建conda虚拟环境4、启动和安装环境 七、完整dockerf…...
本地部署大模型-web界面(ollama + open-webui)
一、安装ollama 二、安装部署open-webui 1、项目运行环境 (1)配置python环境—官方下载链接 可通过命令行直接更改python镜像源为阿里云镜像源: >pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/也可手动修…...
Uniapp 实现微信小程序滑动面板功能详解
文章目录 前言一、功能概述二、实现思路三、代码实现总结 前言 Uniapp 实现微信小程序滑动面板功能详解 一、功能概述 滑动面板是移动端常见的交互组件,通常用于在页面底部展开内容面板。本文将介绍如何使用 Uniapp 开发一个支持手势滑动的底部面板组件࿰…...
redis一些常用的命令(1)
启动redis redis-server /home/XXX/myredis/redis.conf 默认不是后台运行的,修改配置文件,daemonized on /var/run/redis.pid when daemonized port 6380 默认端口的6379 bind:127.0.0.1 默认是本地 连接不同的端口 redis-cli -p 6380 制…...
Java虚拟机JVM知识点(已完结)
JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…...
【C++进阶四】vector模拟实现
目录 1.构造函数 (1)无参构造 (2)带参构造函数 (3)用迭代器构造初始化函数 (4)拷贝构造函数 2.operator= 3.operator[] 4.size() 5.capacity() 6.push_back 7.reserve 8.迭代器(vector的原生指针) 9.resize 10.pop_back 11.insert 12.erase 13.memcpy…...
VUE3+Mapbox-GL 实现鼠标绘制矩形功能的详细代码和讲解
以下是如何使用 Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解。Mapbox GL JS 是一个强大的 JavaScript 库,可以用来创建交互式地图。下面将通过监听鼠标事件并动态更新地图图层来实现这一功能。 实现步骤 初始化地图 在 HTML 文件中引入 Mapbox GL JS 库&…...
《筋斗云的K8s容器化迁移》
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章:斗战胜佛的延迟焦虑****第二章:微服务化的紧箍咒****第三章:混沌中的流量劫持****第四章:量子筋斗的终极形态****终章&…...
面试遇到的几个问题小记20250401
一、echarts设置数据的几种方式 在 ECharts 里,设置数据存在多种方式,下面为你详细介绍: 在初始化配置项时设置数据 这是最为常见的方式,也就是在创建 ECharts 实例的时候,于配置项 option 里直接设置数据。 // 基于…...
java swing 密码框如何在获取到焦点时,输入法自动切换为英文状态
一、java swing 密码框如何在获取到焦点时,输入法自动切换为英文状态 在 Java Swing 中,JPasswordField 用于输入密码,默认情况下,输入法状态不受控。要在获取焦点时自动切换为英文状态,可以通过以下步骤实现…...
图像处理中的Transformer Block实现与解析
图像处理中的Transformer Block实现与解析 随着深度学习技术的不断进步,Transformer结构在自然语言处理领域取得了显著的成功。近年来,这种注意力机制也被引入到计算机视觉任务中,展示了其强大的表现力和效果提升能力。本文将从代码实现的角…...
基于SpringBoot的“考研学习分享平台”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“考研学习分享平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能结构图 局部E-R图 系统首页界面 …...
Web3.0隐私计算与云手机的结合
Web3.0隐私计算与云手机的结合 Web3.0隐私计算与云手机的结合,标志着从“数据垄断”向“数据自主”的范式转变。通过技术互补,两者能够构建更安全、高效且用户主导的数字生态。尽管面临技术整合和成本挑战,但随着区块链、AI和分布式存储的成…...
视觉与激光点云 融合的 三维重建算法
以下是一些结合激光点云(LiDAR)与其他数据(如图像、RGB-D等)的三维重建算法,这类方法通过融合多模态数据提升重建的精度和完整性: 1. 传统几何融合方法 (1) LiDAR 相机(RGB/LiDAR Fusion…...
Linux上位机开发实践(超越MPP去开发产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于芯片厂商来说,肯定希望客户的应用和自己的芯片绑定地越紧密越好。最好就是,他们自己成为客户的独家供应商。但是对于嵌…...
雪花算法生成的主键存在哪些问题,为什么不能使用自增ID或者UUID做MySQL的主键
MySQL 分布式架构中的主键选择:自增ID、UUID与雪花算法 为什么MySQL分布式架构中不能使用自增主键? 在分布式架构中,自增主键存在以下问题: 主键冲突风险:多个数据库实例同时生成自增主键会导致ID重复分片不均匀&am…...
SpringBean模块(二)bean初始化(2)和容器初始化顺序的比较--引入ApplicationContextInitializer
前面介绍了获取容器可以让spring bean实现ApplicationContextAware,实际也是初始化执行了setApplicationContext接口, 初始化接口还可以借助一些注解或者spring bean的初始化方法,那么他们的执行顺序是什么样的呢? 一、验证&…...
【分享】内外网文件摆渡系统:让数据传输更安全更可靠
【分享】Ftrans内外网文件摆渡系统:让数据传输更安全更可靠! 随着大数据时代的到来,数据的重要性日渐得到重视,数据作为数字经济时代下的基础性资源和战略性资源,是决定国家经济发展水平和竞争力的核心驱动力。以行业…...
2025年江苏省职业院校技能大赛 (高职组)大数据应用开发赛项任务书 (样题)
2025年江苏省职业院校技能大赛 (高职组)大数据应用开发赛项任务书 (样题) 背景描述:任务A:离线数据处理(35分)子任务一:数据抽取子任务三:指标计算 任务B&…...
前端学习记录之HTML
1. 网页 1.1 什么是网页 网站是指在因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是HTML格式的文件,它要通过浏览器来阅读 网页是构成网站的基本元素。它通常由图片,…...
