服务端性能测试——性能测试工具JMeter-L1
第一遍没学懂,后续文章会更新~
目录:
- 1.JMeter介绍与安装
- Meter简介
- JMeter安装
- 2.JMeter的运行
- JMeter运行、界面功能简介
- 3.使用代理服务器录制请求
- 录制压测脚本(一)Web端
- 脚本录制方法
- 4.测试计划
- 5.线程组
- 6.控制器
- 7.JMeter采样器/取样器
- 8.JMeter场景逻辑控制技术
- 9.JMeter监听器
- 10.JMeter定时器
- 11.JMeter断言元件的使用
- 12.JMeter常用配置元件剖析
- 13.JMeter前置处理器
- 前置处理器
- SampleTimeout前置处理器
- Beanshell前置处理器
- 14.JMeter后置处理器
- 15.JMeter执行顺序
- 16.JMeter虚拟用户管理
- 17.HTTP请求属性设置
- 18.HTTPcookie设置
- Cookiemanager
- 19.HTTP信息头管理器
- Headermanager
- 20.HTTP请求设置
- 21.监听器与测试结果
- Listener&测试结果
1.JMeter 介绍与安装
Meter简介
- Apache组织开发的开源免费压测工具
- 纯Java程序,跨平台性强
- 源程序可以从网上下载高可扩展性
- 可对服务器、网络或对象模拟巨大的负载,进行压力测试可以用于接口测试
- 支持分布式、多节点部署
JMeter 安装
下载位置:
- 官网 https://jmeter.apache.org/
- binary 可运行文件包
- 官网下载规律 首页 -> Download -> binaries
- JMeter 安装方法: 直接解压
- Demo: JMeter 官网寻找安装包,下载,解压
2.JMeter 的运行
JMeter 运行、界面功能简介
- 运行环境要求:java运行时环境
- 运行方法:命令行直接启动 $jmeter_home/bin/jmeter.sh
- 常规的菜单功能:新建、保存、查询、配置、帮助 等
- 压测运行相关:开始运行、停止运行、远程运行、停止远程运行 等
- 设定外观长相更改
- 配置语言,不过建议用英语(个人体会中文翻译的有点晕)
- Demo – JMeter 界面操作、外观、语言
3.使用代理服务器录制请求
录制压测脚本(一)Web 端
- 压测对象 - http://news.baidu.com
- 压测页面 – 百度首页,百度新闻
- 步骤:
- 访问百度首页
- 单击进入“百度新闻”
- 操作手段: 录制回放,上手容易,入门学习的好手段
脚本录制方法
- 打开 JMeter
- 新建压测脚本
- 添加 “HTTP(S) Test Script Recorder”
- 添加“Thread Group”
- 在 Thread Group中添加“Recording Controller”
- 打开 HTTP(S) Test Script Recorder
- 设定 Port = 8088
- 设定 Target Controller = Test Plan > Tread Group > Recording Controller
- 在 Requests Filtering 添加“include”与 “Exclude”URL 正则匹配表达式
- 目的:避免录制过多没必要的请求
- Include: .*\.(baidu\.com).*
- Exclude:.*\.(js|css|PNG|jpg|ico|png|gif).*
- 关于链接过滤的几点说明
- exclude 去掉一些诸如图片、js、css 等静态请求,这些静态资源一般会 单独存放,不会占用服务器运算资源所以压测的时候可以不测试这些资源
- include 包含内容,只抓取百度URL的内容,不抓其他的网站的内容
- 正则表达试匹配原理快速入门说明见下页图片说明(菜鸟教程)
- 单击保存按钮,命名文件名,将对 JMeter 脚本的更改存储到磁盘
- 打开浏览器,将浏览器的代理服务器地址指向 http://localhost:8088
- 单击HTTP(S) Test Script Recorder中的Start按钮,打开代理
- 单击弹框中的确定按钮
- JMeter的录制代理将会开启
- 在对应的浏览器中访问百度首页
- 进入百度新闻站点
- 停止JMeter的代理服务
- 可以看到对应的请求已被录制到JMeter中了
- Demo – JMeter 脚本的录制过程,过滤资源的对比展示
- 回放验证
- 添加 View Results Tree
- View Result Tree 的用途: 看Req /Resp 详情
- 只是为了检验,所以一个并发、一次循环即可
- 单击开始运行按钮
- 在 View Result Tree 中
- 检查 请求/响应 是否都成功了
- JMeter 压测回放,检查脚本的正确性
4.测试计划
- 用来描述一个压力/性能测试脚本和场景设计的基本运行单元, 使用JMeter进行测试 的所有内容都是基于一个测试计划
- 用户定义变量
- 独立运行每个线程组
- 不勾选:各个线程组并行、随机执行
- 勾选:线程组按照前后顺序来执行
- 主线程组运行完成之后运行tearDown线程组
- 函数测试模式,比如保存响应数据或者样本数据,需要注意的是选择该功能非常磁盘 空间
- 添加文件或者jar包,常用于外部功能调用
- Demo: 测试计划
5.线程组
- 线程组元件是任何一个测试计划的开始点,在一个测试计划中的所有元件 都必须在某个线程组下,所有的任务都是基于线程组。
- 第一部分:在请求取样器执行错误时需要执行的下一步动作
- 第二部分:线程属性
- 第一部分:在请求取样器执行错误时需要执行的下一步动作
- Continue:继续执行接下来的操作
- Start Next Loop:忽略错误,执行下一个循环
- Stop Thread:退出该线程(不再进行此线程的任何操作)
- Stop Test:等待当前执行的采样器结束后,结束整个测试
- Stop Test Now:直接停止整个测试
- 第二部分:线程属性
- Number of Thread (users):线程数,模拟的用户数量
- Ramp-up Period(in seconds):达到指定线程数所需要的时间。举例:线程数设置 为50,此处设置为5,那么每秒启动的线程数 => 线程数50/5 = 10
- Loop Count: 循环次数
- Same user on each iteration:每次迭代都用相同的用户, 勾选该选项则不同次迭代 之间是串行执行,不勾选则为并行执行。
- Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不 选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了
- Specify Thread lifetime:定义线程调度时间
- Duration (seconds): 持续时间(秒), 在此选项填入N,说明这个计划, 从某个开始时间算起,执行N秒后结束。(会忽略 结束时间 的选项)
- Startup delay (seconds): 启动延迟(秒),在此选项填入N,手动点击 开始执行计划,然后延迟N秒后,计划才真正开始执行。
6.控制器
- 种类丰富
- 为请求执行提供不同的逻辑控制
- 介绍几个常用的逻辑控制器
- 事务控制器 Transaction Controller
- 条件控制器 If Controller
- 循环控制器 Loop Controller
- 随机控制器 Random Controller
7.JMeter 采样器/取样器
- 采样器(取样器): 模拟用户操作,向服务器发出请求的组件;
- 采样器作用:向服务器发送请求,记录响应信息与响应时间;
- 常用采样器讲解:
- HTTP Request Sampler
- Debug Sampler
- BeanShell Sampler
8.JMeter 场景逻辑控制技术
- 利用JMeter 逻辑控制器
- 实现测试业务流程中的逻辑变化
- 模拟实际业务场景
- 场景逻辑控制技术
9.JMeter 监听器
- 用来动态的监控JMeter执行测试的过程,实时查看测试结果;
- 常用监听器:
- 查看结果树
- 聚合报告
- 后端监听器
10.JMeter 定时器
- 顾名思义,定时器是用来控制采样器发出请求开始时间的组件
- 常见定时器:
- 固定定时器
- 高斯随机定时器
- 吞吐量定时器
- 并发定时器
11.JMeter 断言元件的使用
- 断言的作用就是让 JMeter 程序判断预期结果和实际结果是否一致,从而 判定请求是否成功
- 常见断言:
- 响应断言
- 大小断言
- XPath 断言
- Json 断言
12.JMeter 常用配置元件剖析
- 配置元件的用途
- 常见的配置元件
- 配置元件的执行顺序
- 配置元件的作用范围
- 配置元件执行结果的查看
13.JMeter 前置处理器
前置处理器
- 在取样器发送请求之前执行,做一些准备工作,如设置参数、环境变量等
- 常见前置处理器举例:
- Sample Timeout 前置处理器
- BeanShell 前置处理器
Sample Timeout 前置处理器
- 设定请求超时时间
- 作用范围内的所有请求均生效
- 单位:毫秒
Beanshell 前置处理器
- 什么是Beanshell
- 小型嵌入式 Java 源码解释器
- 基本就是 Java 语言
- BeanShell前置处理器:在Sampler 执行之前会被执行
- 直接在JMeter的Beanshell处理器中写代码生成当前时间戳
- 通过程序生成当前时间戳
- 将时间戳值赋值给变量,然后传递给后续的请求样本
14.JMeter 后置处理器
- 后置处理器主要用于取样器执行后的提取数据操作;
- 常见的后置处理器:
- Json 数据提取器
- 正则表达式数据提取器
- XPath 数据提取器
15.JMeter 执行顺序
- JMeter 八大组件
- 执行顺序
- 线程组->定时器->控制器->前置处理器->配置原件->采样器->后置处理器->断言->监听器
16.JMeter 虚拟用户管理
~
17.HTTP 请求属性设置
~
18.HTTP cookie 设置
Cookie manager
- 自定义cookie
- 配置项
19.HTTP 信息头管理器
Header manager
- 自定义header 变量
- Header变量值的带入
20.HTTP 请求设置
21.监听器与测试结果
Listener & 测试结果
- Listener 种类多样
- 展示 & 调试测试结果
相关文章:

服务端性能测试——性能测试工具JMeter-L1
第一遍没学懂,后续文章会更新~ 目录: 1.JMeter介绍与安装Meter简介JMeter安装2.JMeter的运行JMeter运行、界面功能简介3.使用代理服务器录制请求录制压测脚本(一)Web端脚本录制方法4.测试计划5.线程组6.控制器7.JMeter采样器/取…...

C# OpenCvSharp DNN FreeYOLO 目标检测
目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 目标检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…...

U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题
一、使用U盘制作启动盘遇到问题 下载了windows原版镜像,验证了md5,确保文件没有损坏。使用ultroiso制作u盘启动盘,开始安装后出现下图的报错: 在网上搜索解决方案,主要有以下几种: 安装的时候,…...

正则表达式、文件访问(Python实现)
一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…...

ES高级查询
ES中提供了一种强大的检索数据方式,这种检索方式称为Query DSL,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.常见查询 1.1查询所有[match_all] match_all关键字:返回索引中的全部文档。 GET /products/_search { &…...

RT-Thread入门笔记6-空闲线程及两个常用的钩子函数
空闲线程 空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…...

网络正常运行时间监控工具
正常运行时间是衡量系统可靠性的指标,表示为机器工作和可用时间的百分比。当提到 IT 网络时,正常运行时间是衡量网络设备、网站和其他服务的可用性的指标。网络正常运行时间通常以百分位数来衡量,例如“五个 9”,这意味着系统在 9…...
DEJA_VU3D - Cesium功能集 之 112-获取圆节点(1)
前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…...
Matlab 建文件夹保存本次仿真图表数据和参数
文章目录 前言代码 前言 有时候跑的仿真参数非常多,保存结果的时候需要把仿真参数和数据一起保存,为方便起见,查了一下怎么建文件夹自动保存本次仿真图表数据和参数,再也不用担心忘记结果是什么参数跑出来的了~ 代码 % 定义变量…...

@JsonFormat与@DateTimeFormat
JsonFormat注解很好的解决了后端传给前端的格式,我们通过使用 JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题 其次,另一个问题是,我们在使用WEB服务的时,可 能会需要用到,传入时间给后台&am…...
半监督学习 - 自训练(Self-training)
什么是机器学习 半监督学习中的自训练(Self-training)是一种利用已标记数据和未标记数据进行模型训练的方法。以下是自训练的详细教程: 步骤一:准备数据集 标记数据集: 收集和标记一小部分数据,用于有监…...

outlook邮件群发单显技巧?群发怎么单显?
outlook邮件群发单显如何设置?QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlo…...

【REST2SQL】07 GO 操作 Mysql 数据库
【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统…...

[UI5] ODATA V4中的CRUD
文章目录 前言一、Read二、Create三、Update四、Delete 前言 ODATA V4在CRUD方面与V2截然不同。 这篇文章简单介绍V4中是如何进行CRUD操作 一、Read Model不再有read方法, 一般是把Path绑定到View中进行读取, 如果需要额外的读取数据,可使用…...

js封装根据年月日获取星座效果demo(整理)
//根据年月日获取星座 function getZodiacSign(dateString) {// 用法:const dateStr 2024-01-11;// const zodiacSign getZodiacSign(dateStr);const date new Date(dateString);const month date.getMonth() 1;const day date.getDate();if ((month 1 && day &…...

Vue.js设计与实现阅读-2
Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…...

GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分
简介 McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的. power 构成: 动态功耗其实更相关于energy McPAT的power 核心是两类,动态和静态…...

使用组合框QComboBox模拟购物车
1.组合框: QComboBox 组合框:QComboBox 用于存放一些列表项 实例化 //实例化QComboBox* comboBox new QComboBox(this);1.1 代码实现 1.1.1 组合框的基本函数 QComboBox dialog.cpp #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog…...

云服务器十大服务商——云服务器哪家好用
云服务器哪家便宜?2024最新整理你要的都在这!头部云厂商阿里云、腾讯云、华为云、京东云、UCloud等都在降价,阿腾云atengyun.com分享2024年云服务器租用价格给你惊喜! 便宜云服务器阿里云腾讯云华为云 2024年便宜云服务器汇总&…...
SQL DML
# DML—添加数据 1.给指定字段添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2...); 2.给全部字段添加数据 INSERT INTO表名VALUES(值1,值2,...); 3.批量添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2..…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...