当前位置: 首页 > news >正文

服务端性能测试——性能测试工具JMeter-L1

第一遍没学懂,后续文章会更新~ 

目录:

  1. 1.JMeter介绍与安装
  2. Meter简介
  3. JMeter安装
  4. 2.JMeter的运行
  5. JMeter运行、界面功能简介
  6. 3.使用代理服务器录制请求
  7. 录制压测脚本(一)Web端
  8. 脚本录制方法
  9. 4.测试计划
  10. 5.线程组
  11. 6.控制器
  12. 7.JMeter采样器/取样器
  13. 8.JMeter场景逻辑控制技术
  14. 9.JMeter监听器
  15. 10.JMeter定时器
  16. 11.JMeter断言元件的使用
  17. 12.JMeter常用配置元件剖析
  18. 13.JMeter前置处理器
  19. 前置处理器
  20. SampleTimeout前置处理器
  21. Beanshell前置处理器
  22. 14.JMeter后置处理器
  23. 15.JMeter执行顺序
  24. 16.JMeter虚拟用户管理
  25. 17.HTTP请求属性设置
  26. 18.HTTPcookie设置
  27. Cookiemanager
  28. 19.HTTP信息头管理器
  29. Headermanager
  30. 20.HTTP请求设置
  31. 21.监听器与测试结果
  32. 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盘启动盘,开始安装后出现下图的报错: 在网上搜索解决方案,主要有以下几种: 安装的时候&#xff0c…...

正则表达式、文件访问(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是一个关系型数据库管理系统&#xf…...

[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..…...

MySQL--基础篇

这里写目录标题 总览MySQl各个阶段基础篇总览 MySQL概述数据库相关概念查看本机MySQL版本号启停mysql打开windows服务管理windows命令行启停 连接mysql客户端mysql运行逻辑数据模型关系型数据库 总结 SQL总览SQL通用语法SQL语句分类DDL数据库操作表操作查询表创建表结构数据类型…...

[VUE]5-TypeScript

目录 1 TypeScript 介绍2、安装3、快速上手4、TypeScript 常用类型4.1 类型标注的位置4.2 字符串、数字、布尔类型4.3 字面量类型4.4 ⭐interface 类型4.5 class 类型 ​🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,…...

Linux指令(一)

今天来学习Linux的一些基本的指令。 今天要学习的指令有ls,pwd,mkdir,cd,touch,rm等。 指令的格式 在Linux中,指令的语法通常遵循以下格式: command [options] [arguments] command 是要执行…...

C语言中的回文素数

任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。求 1000 以内的所有回文素数。 算法思想 实例的重点是判断一个数是否是回文素数。要输出 1000 以内的所有回文素数,首先应判断这个数是否是素数&#xf…...

前端生成pdf之html2canvas+jsPDF,以及解决图片不显示bug

前端如何生成pdf 开发背景: 需要给页面中相应的内容生成pdf,查找文档后发现要用到两个插件。html2canvas 以及 jsPDF html2canvas 给dom结构转化为canvas,然后生成各种类型图片jsPDF 把canvas 生成的图片url 转化为pdf // 插入图片 pdf.addI…...

PHP常用符号和函数

// 单行注解 /* */ 多行注解 引号的使用 ’ ’ 单引号,没有任何意义,不经任何处理直接拿过来; ” “双引号,php动态处理然后输出,一般用于变量. 变量形态: 一种是True 即 真的; 另一种是False 即假的 常见变量形态: string 字串(数字\汉字\等等) integer 整数(1、2、…...

C#,入门教程(12)——数组及数组使用的基础知识

上一篇: C#,入门教程(11)——枚举(Enum)的基础知识和高级应用https://blog.csdn.net/beijinghorn/article/details/123917587 数组是一种数据集合,是一组完全相同的、按顺序存放的数据。 需要记住数组的几个特征&…...

C语言中的副作用、序列点以及复杂表达式的求值顺序

C语言中复杂表达式的求值顺序 num (5 2) * (9 * 6);如果我问你:上面的c程序在执行的时候到底是先算(5 2)还是(9 * 6)?你会怎么回答? 无非就两种:先算(5 2&#xff…...

C++学习笔记——队列模拟

目录 一、模拟队列 二、模拟队列的知识点 三、队列 3.1入队操作 3.2出队操作 3.3访问队首元素 3.4访问队尾元素 3.5判断队列是否为空 3.6获取队列的大小 四、实现队列的基本功能 一、模拟队列 当涉及到数据存储和处理时,队列是一种常见的数据结构&#x…...

jvm垃圾回收相关的算法

什么是垃圾 JVM主要通过以下几种方式来判断对象是否需要回收: 引用计数法:JVM通过引用计数器来判断对象的引用数量,当引用数量为0时,表示对象可以被回收。 可达性分析算法:JVM通过根对象(如栈中的引用、静…...

曰本真人性做爰视网站/培训方案怎么做

编辑:的IPackageDataObserver类添加到项目中的自我,它能够做到这一点的唯一方法。打个包在你的源文件夹命名为“android.content.pm”这个类添加到它,这个类就是原生Android的源代码:/** This file is auto-generated. DO NOT MOD…...

博客网站做外贸可以吗/seo快速优化软件网站

部署前端之前,开发者通常会对代码进行打包压缩,这样可以减少代码大小,从而有效提高访问速度。然而,压缩代码的报错信息是很难Debug的,因为它的行号和列号已经失真。这时就需要Source Map来还原真实的出错位置了。 为啥…...

wordpress个人站主题/ping站长工具

在这里我试图上传pdf,doc和docx文件。 PDF文件正在上传,但doc和docx文件未上传。我在form标记中保留了enctype"multipart/form-data"属性。我的代码有什么问题。if ((($_FILES["uploadjob"]["type"] "application/p…...

地名网站建设方案/百度关键词优化软件排名

来源:中国Windows联盟winver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构(WMI)wupdmgr--------windows更新程序wscript--------windows脚本宿主设置write----------写字板winmsd---------系统信息wiaacmgr-------扫描仪和照相机向导winchat----…...

iphone8多少钱/关键词优化的技巧

实验前知识准备:微软的socket开发文档,包含api的用法及解释:https://docs.microsoft.com/zh-cn/windows/win32/api/_winsock/1.什么是socket:我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层&…...

cent os wordpress/百度指数搜索热度排行

文章目录2. 论文介绍3. 参考资料:4. 收获2. 论文介绍 摘要: 模型图:Shared Multi-scale Graph-Based Encoder Multi-Task Loss 准确率:在ShapeNet 上训练,在ModelNet40上测试 半监督:只用5%的数据 半…...