【Jmeter】记录一次Jmeter实战测试

Jmeter实战

  • 1、需求
  • 2、实现
    • 2.1、新建线程组
    • 2.2、导入参数
    • 2.3、新建HTTP请求
    • 2.4、添加监听器
    • 2.5、结果

1、需求

查询某个接口在高并发场景下的响应时间(loadtime),需求需要响应在50ms以内,接下来用Jmeter测试一下

Jmeter安装见文章《Jemeter安装教程,Windows下Jemeter详细安装》

2、实现

请求接口localhost:25000/open/noauth/mkt-recall/hwrta3?uuid=xxxx

底层逻辑:根据uuid缓存,缓存能查到直接返回,缓存不能查到,查数据库,然后更新缓存

方案:现选取20个uuid,每个uuid请求50次,不污染线上环境,现以开发环境为例子

2.1、新建线程组

添加线程组
在这里插入图片描述

添加如下参数

在这里插入图片描述

2.2、导入参数

我选择使用csv导入参数

首先去数据库找出20个能用的uuid

select distinct(uuid) FROM t_track_active limit 20

在这里插入图片描述

然后将数据导入csv中(建议先用xlsx写,然后另存为.csv格式,防止乱码)

在这里插入图片描述

在这里插入图片描述

然后右击线程组,添加配置元件中的CSV Data Set Config

在这里插入图片描述

输入文件名和变量名称

在这里插入图片描述

2.3、新建HTTP请求

如下

在这里插入图片描述

  • 配置 HTTP 请求的参数:
    • Server Name or IP: 输入目标服务器的域名或 IP 地址。
    • Path: 输入请求路径。
    • Method: 选择请求方法(例如 GET 或 POST)。
    • 在请求参数中,使用 ${uuid} 引用 CSV 文件中的 UUID 值。

在这里插入图片描述

2.4、添加监听器

添加查看结果树和汇总报告两个监听器

在这里插入图片描述

配置完目录如下:

在这里插入图片描述

点击绿色箭头运行

在这里插入图片描述

2.5、结果

查看结果树中就有响应数据

在这里插入图片描述
在这里插入图片描述

  1. Thread Name: 线程组 1-11,表示这是“线程组 1”中的第 11 个线程执行的请求。

  2. Sample Start: 2024-07-19 18:36:51 CST,表示请求开始的时间,是在 2024 年 7 月 19 日 18:36:51(CST 时间)。

  3. Load time: 13,表示请求从开始到完成的总时间(毫秒)。在这个例子中是 13 毫秒。

  4. Connect Time: 0,表示建立连接所花费的时间(毫秒)。在这个例子中是 0 毫秒,意味着连接已经是复用的(例如,HTTP Keep-Alive)。

  5. Latency: 13,表示请求从开始到接收到第一个字节的时间(毫秒)。在这个例子中也是 13 毫秒,表明整个请求响应时间和接收到第一个字节的时间相同。

  6. Size in bytes: 762,表示整个响应的大小(字节),包括 headers 和 body。在这个例子中是 762 字节。

  7. Sent bytes: 187,表示发送的请求大小(字节)。在这个例子中是 187 字节。

  8. Headers size in bytes: 162,表示响应 headers 的大小(字节)。在这个例子中是 162 字节。

  9. Body size in bytes: 600,表示响应 body 的大小(字节)。在这个例子中是 600 字节。

  10. Sample Count: 1,表示这个请求样本的数量。在这个例子中是 1。

  11. Error Count: 0,表示请求错误的数量。在这个例子中是 0,意味着没有错误。

  12. Data type (“text”|“bin”|“”): text,表示响应的数据类型。在这个例子中是文本(text)。

  13. Response code: 200,表示 HTTP 响应码。在这个例子中是 200,意味着请求成功。

  14. Response message: OK,表示 HTTP 响应消息。在这个例子中是 OK,通常与响应码 200 一起出现,表示请求成功。

  15. HTTPSampleResult fields:,包含一些附加信息。

  16. ContentType: application/json,表示响应的 Content-Type。在这个例子中是 application/json,意味着响应是 JSON 格式。

  17. DataEncoding: null,表示响应的字符编码。在这个例子中是 null,意味着没有特定的字符编码信息。

在这里插入图片描述

运行测试后,点击汇总报告监听器,你会看到以下列:

  • Label: 请求名称
  • Samples: 样本数
  • Average: 平均负载时间(Load time)
  • Min: 最小负载时间
  • Max: 最大负载时间
  • Std. Dev.: 标准差

在 Average 列中,你可以看到平均负载时间为17ms。

现在我们清除一下树,在运行一次

在这里插入图片描述
查看汇总报告

在这里插入图片描述
平均loadtime来到了2ms,第一遍走数据库平均是17ms,第二遍查的缓存,平均是2ms,所以缓存速度还是比数据库快很多

在这里插入图片描述

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

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

相关文章

多层全连接神经网络(四)---简单的前向网络

神经网络神经元概念部分有需要会单独再讲 激活函数 1. Sigmoid Sigmoid 非线性激活函数的数学表达式是 σ(z) ,其图形如图 3.14所示。目前我们知道 Sigmoid 激活函数是将一个实数输入转化到 0~1 之间的输出,具体来说也就是将越大的负数转化到越靠近 0…

C/C++蓝屏整人代码

文章目录 📒程序效果 📒具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 📒代码详解 🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主&a…

笔记 7 :linux 011 注释,函 bread () , get_hash_table () , find_buffer ()

(57)接着介绍另一个读盘块的函数 bread(): (58)因为 函数 get_blk()大量调用了其它函数,一版面列举不完,故对其调用的函数先行注释:ge…

鲁大师2024半年报电动车智能排行:九号继续霸榜,极核本田乘胜追击

鲁大师2024年半年报正式发布,本次季报包含电动车智能排行,测试的车型为市面上主流品牌的主流车型,共计30款,全部按照评测维度更广、更专业的鲁大师电动车智慧评测2.0进行评分,测试的成绩均来自于鲁大师智慧硬件实验室。…

口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!

在《口袋奇兵》中,战锤入侵是一个重要的游戏环节,了解如何有效地参与战锤入侵能够帮助玩家获取更多的资源和提升自己的战力。本文将详细介绍战锤入侵的策略和技巧,帮助玩家在战锤入侵活动中取得更好的成绩。除了找到强力的游戏辅助&#xff0…

粉尘传感器助力面粉厂安全生产

在面粉加工行业中,粉尘问题一直是一个不容忽视的难题。从原料的破碎、研磨到成品的包装,整个生产流程中都会伴随着大量的粉尘产生。这些粉尘不仅影响生产环境,更对工作人员的健康、设备的安全运行以及环境保护构成严重威胁。因此,…

食堂采购系统开发:从需求分析到上线实施的完整指南

本篇文章,笔者将详细介绍食堂采购系统从需求分析到上线实施的完整过程,旨在为开发团队和管理者提供一个系统化的指南。 一、需求分析 1.用户需求 常见的需求包括: -采购计划管理 -供应商管理 -库存管理 -成本控制 -报表生成 2.系统功…

PyTorch使用细节

model.eval() :让BatchNorm、Dropout等失效; with torch.no_grad() : 不再缓存activation,节省显存; 这是矩阵乘法: y1 tensor tensor.T y2 tensor.matmul(tensor.T)y3 torch.rand_like(y1) torch.matm…

js reduce 的别样用法

let mergedItems list.reduce((accumulator, currentItem) > {let existingItem accumulator.find((item) > item.manObject_name currentItem.manObject_name);if (existingItem) {existingItem.laborCostHand currentItem.laborCostHand; //劳务费existingItem.wor…

有了这5个高效视频剪辑工具,你一定会爱上剪辑

如果你是个剪辑新手,不知道如何挑选剪辑视频的工具,又或者是自己目前使用的剪辑工具不理想,想寻找新的剪辑软件;那就请你看看这篇文章,这里介绍的5款剪辑软件都是专业,简单,又高效的剪辑工具。 …

顺序表<数据结构 C版>

目录 线性表 顺序表 动态顺序表类型 初始化 销毁 打印 检查空间是否充足(扩容) 尾部插入 头部插入 尾部删除 头部删除 指定位置插入 指定位置删除 查找数据 线性表 线性表是n个相同特性的数据元素组成的有限序列,其是一种广泛运…

04 Git与远程仓库

第4章:Git与远程仓库 一、Gitee介绍及创建仓库 一)获取远程仓库 ​ 使用在线的代码托管平台,如Gitee(码云)、GitHub等 ​ 自行搭建Git代码托管平台,如GitLab 二)Gitee创建仓库 ​ gitee官…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后,找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库(我的仓库名为book) 2、添加文件到 …

Spring-Boot基础--yaml

目录 Spring-Boot配置文件 注意: YAML简介 YAML基础语法 YAML:数据格式 YAML文件读取配置内容 逐个注入 批量注入 ConfigurationProperties 和value的区别 Spring-Boot配置文件 Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.prope…

参与开源项目 MySQL 的心得体会

前言 开源项目的数量和种类都在急剧增长,涵盖了从操作系统、数据库到人工智能、区块链等几乎所有的技术领域。这为技术的快速创新和迭代提供了强大的动力,使得新技术能够更快地普及和应用. 目录 经历 提升 挑战 良好的编程习惯 总结 经历 参与开源…

Linux Namespace

Linux namespaces 介绍 namespaces是Linux内核用来隔离内核资源的方式。通过namespaces可以让一些进程只能看到与自己相关的那部分资源。而其它的进程也只能看到与他们自己相关的资源。这两拨进程根本感知不到对方的存在。而它具体的实现细节是通过Linux namespaces来实现的。 …

(三)C++之运算符重载

一.概念 C准许以运算符命名函数&#xff01;&#xff01;&#xff01; string a “hello”; a “ world”;// (a, “world”); cout<<“hello”; // <<(cout, “hello”); 可重载的运算符 不可重载的运算符 二.成员函数式(第一个行参是对象的引用) class T…

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里&#xff1a; 要勾选上Title Block Visible下面的print

Nginx详解(超级详细)

目录 Nginx简介 1. 为什么使用Nginx 2. 安装Nginx Nginx的核心功能 1. Nginx反向代理功能 2. Nginx的负载均衡 3 Nginx动静分离 Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在BSD-like 协…

你能分清工业领域这些常见的技术文档吗?

在制造业领域中&#xff0c;技术文档是不可或缺的宝贵资源。它们不仅是产品设计理念的载体&#xff0c;更是指导生产、保证质量、降低错误的关键。技术文档详尽描述了产品的每一个细节&#xff0c;从设计原理到零部件规格&#xff0c;从装配步骤到操作指南&#xff0c;无所不包…