【测试功能篇 01】Jmeter 压测接口最大并发量、吞吐量、TPS

压力测试,我们针对比较关键的接口,可以进行相应的压力测试,主要还是测试看看接口能抗住多少的请求数,TPS稳定在多少,也就是吞吐量多少

 安装

  • Jmeter的安装很简单,官网下载地址 http://jmeter.apache.org/ ,解压软件包后运行bin目录下的jmeter.bat就可以了

 

配置中文编码

bin目录下的jmeter.properties

sampleresult.default.encoding=utf-8

配置代理 (方法二需要)

如果说公司内网有做代理,那么就需要配置公司的代理服务,这样才能访问网络,完成后面我们需要的安装jmeter插件实现梯式线程压测的线程与监听器(TPS压测图等,带jp@的监听器)的引用。如果网络不通,是无法安装好对应的插件的,完成下面方法二的梯式递增线程的压测方式

方法一:运行时配置 

jmeter.bat -H proxy.xxx.com -P 8080 -u 账号 -a 密码

方法二:配置文件配置

bin目录下的 system.properties文件

//具体格式看内网情况
http.proxyHost=proxy.xxx.com
https.proxyHost=proxy.xxx.com
http.proxyPort=8080
https.proxyPort=8080

配置证书(方法二需要)

     下载证书   

步骤1:使用chrome浏览器打开jmeter插件官网,链接:https://jmeter-plugins.org 。

步骤2:在地址栏点击锁图标,下拉菜单点击“连接是安全的”,次级菜单点击“证书有效”。

步骤3:在弹出的证书信息页面,点击“证书路径”,选择根证书“xxxCA”,点击“查看证书”。

步骤4:在弹出的证书信息页面,导出Base64编码文件,选择目录放好,用于后续导入D:\xxxCA.cer

    

       导入证书

步骤1以管理员身份运行windows命令行工具,然后切换到jdk安装目录下的jre\lib\sercurity目录。

例如  cd /D C:\Program Files\jdk1.8.0_272\jre\lib\security

注意:务必管理员身份运行,否则后续步骤导入证书到密钥库会失败,提示  “keytool 错误: java.io.FileNotFoundException: cacerts (拒绝访问。)”。

 

步骤2输入以下命令,导入证书。 证书路径就是前面下载的路径

keytool -import -alias CA -keystore cacerts -file D:\xxxCA.cer

输入密钥看库口令: changeit

是否信任次证书:y

步骤3输入以下命令,检查证书是否导入成功。

keytool -list -keystore cacerts -alias CA

压测操作 

操作:这里我有两种模式去压测

方法一:

是直接创建  线程组,然后把请求,请求头,报告,TPS压测图等都创建出来,用来可视化观察压测过程数据,吞吐量的值,可以在聚合报告看

这种方法,比较常用,在线程组中进行设置线程数,每秒执行,那么这个线程数一般就是业务要求的并发用户数,也就是同一时刻,能支持多少用户请求,基于的是系统的用户量,业务的要求,来指定的数值

方法二:

还是一种,就是不知道用户体谅,比如系统用户比较少,不太清楚并发情况,那么可以用插件,梯式增加线程数,直到我们的吞吐量稳定在一个区间,可以通过TPS压测图来看到,随着一开始线程从0增加,TPS(每秒事务数)在递增,达到一定的线程数时,也就来到了系统的瓶颈,TPS开始趋于稳定,然后线程数再增加,那么TPS可能就是下降了,说明在峰值稳定区间,就是系统能支撑住最佳的一个并发数值了。

这种方式适合寻求:如何找到系统的最大并发量。此时,需要我们先做负载测试(负载测试概念:简单来说:逐步增加并发用户数,找出被测系统的最大可接受的并发用户数,并考察系统性能的变化),通过逐步加压,来找到最大并发用户数。那么当我们找到一个区间,怎么找到具体的值呢?

在区间中逐步增加步长,出现以下任意现象时,即是最大并发用户数:

1.出现连续报错

2.平均响应时间超过1.5秒(1.5秒是行业标准)

3.tps出现下降趋势

安装相应jmeter 插件(前提)

1:安装jmeter 管理插件:
下载地址:https://jmeter-plugins.org/install/Install/,将下载下来的jar包放到jmeter文件夹下的lib/ext路径下,然后重启jmeter。

 2:接着打开 选项-Plugins Manager-在Available Plugins中找到Custom Thread Groups,jdbc - Standard Set 安装这两个插件,然后点击右下角图标进行安装重启,安装完成后就可以在Installer Plugins列表中看到,那么接下来就可以执行创建一个线程梯式增加组了

 

 

 

创建测试计划
1.右键”测试计划“》添加》线程

选择”jp@gc - Stepping Thread Group“,插件

默认设定值如下:

jp@gc - Stepping Thread Group填写数据,场景为在5秒内增加10个并发用户数,并运行30秒,再继续在5秒内增加10个并发用户数,重复循环,直至并发用户数达到100个后运行脚本60秒。然后在每1秒内减少5个并发用户数,直到减为0,结束脚本的运行

 

2.添加 取样器- HTTP请求 创建请求

 这里比较简单,类似Postman 

 

3.添加 配置元件- HTTP信息头管理器

注意点在于,我们测试接口的时候,接口一般都是需要认证用户登录,这里我比较简单的去添加一个请求头,放了一个Cookie,这里的Cookie是我在登录系统中,在浏览器控制台中的请求头找到的Cookie信息复制出来的,时间一久了会失效,就需要重新在系统上请求,重新获取,这里比较合理的做法应该是要先创建一个登录请求,然后关联我们用户信息放在一个CSV表格导入到Jmeter中,配置相关信息去获取,但是这种比较麻烦,先不去关注。

 

 

4.添加 监听器

察看结果树、汇总报告、聚合报告、汇总图、TPS(每秒事务数)、RT(响应时间)、AT(活动线程)

吞吐量可以在聚合报告看到,具体的测试图,可以看看TPS

5.分析压测结果 

TPS: 这里刚好出现的异常,当然具体要看是什么异常,我这里测试的时候是刚好cookie失效了。如果说是因为线程过大了,报异常,那么TPS就会下降,中间会有一段峰值趋于稳定,就是这个接口所能抗住的一个最佳的并发量了。然后我们可以接着再去调整最大线程数,重新反复压测,直到获得一个最佳的并发数。

2分多钟时,TPS达到峰值,大概就是60-75,可以接着把线程数从100调整到这个区间,重新进行压测,看看吞吐量会不会有变化

 

2分多钟时,接口的响应时间也是比较可观 每秒请求是800ms左右

汇总报告,吞吐量在51,这是一个平均值,整个测试下来的均值

6..结论

基于上面的测试过程,可以得出一个大致的结论,这个接口的并发量大概是60-75区间 

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

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

相关文章

day30_servlet

今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;import javax.servlet.ServletException; im…

HTML5学习系列之项目实战1

HTML5学习系列之项目实战1 前言代码记录问题总结 前言 学习记录 代码 <div id"player"><audio id"musicbox"></audio><div id"controls" class"clearfix controls"><div id"play" class"…

关于代码混淆,看这篇就够了

​ 代码混淆一.基本概念java的bytecode很容易通过JAD等反编译工具还原出源代码。这样势必不满足安全的定义。如何一定程度上保护需要防止被反编译的源代码呢&#xff1f;混淆&#xff08;obfuscate&#xff09;技术。注意&#xff1a;用obfuscate防盗版是根本不可能&#xff0c…

代码随想录算法训练营第五十八天丨 单调栈01

739. 每日温度 思路 首先想到的当然是暴力解法&#xff0c;两层for循环&#xff0c;把至少需要等待的天数就搜出来了。时间复杂度是O(n^2) 那么接下来在来看看使用单调栈的解法。 什么时候用单调栈呢&#xff1f; 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边…

MySQL 的执行原理(二)

5.3. MySQL 的查询成本 5.3. MySQL 的查询成本 MySQL 执行一个查询可以有不同的执行方案&#xff0c;它会选择其中成本最低&#xff0c;或者 说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模 糊的&#xff0c;其实在 MySQL 中一条查询语句的执行成本…

Cmake学习

cmake大致 cmake_minimum_required(VERSION 3.0)project(test) #通过set自定义变量&#xff0c;通过${}取出 #set(SRC add.cpp main.cpp muti.cpp sub.cpp) #cmake搜索文件 宏定义PROJECT_SOURCE_DIR aux_source_directory(${PROJECT_SOURCE_DIR} SRC) #file(GLOB/GLOB_RECURSE…

静态文件鉴权

​ 静态文件鉴权的解决方案 背景介绍 XX业务系统作为BXX业务系统的孪生姐妹系统&#xff0c;是对BXX受理业务的强力补充系统&#xff0c;他允许操作员拿着IPAD&#xff0c;和客户约定地点上门受理业务。 因一些业务的受理&#xff0c;按照最新的业务规章制度&#xff0c;需…

常用 API 异常

常用 API & 异常 对之前那篇 API 文章的补充学习 1.API 1.1 API概述【理解】 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&am…

OpenCV快速入门:窗口交互

文章目录 前言一、鼠标操作1.1 鼠标操作简介1.2 鼠标事件类型&#xff08;event类型&#xff09;1.3 鼠标事件标志&#xff08;flags&#xff09;1.4 代码示例1.4.1 获取鼠标坐标位置1.4.2 监听鼠标滚轮事件1.4.3 在图像中显示鼠标坐标 二、键盘操作2.1 代码示例2.2 waitKey的等…

ssm家长乐山美食网站系统

1.需求分析\n将进行家乡乐山美食网站的需求分析。需求分析是系统开发过程中的一项重要工作&#xff0c;它是对用户需求进行深入研究和分析&#xff0c;明确系统的功能、性能、界面等方面的需求&#xff0c;为后续的设计和开发提供依据。\n首先&#xff0c;需要明确该网站的主要…

制作Go程序的Docker容器(以及容器和主机的网络问题)

今天突然遇到需要将 Go 程序制作成 Docker 的需求&#xff0c;所以进行了一些研究。方法很简单&#xff0c;但是官方文档和教程有些需要注意的地方&#xff0c;所以写本文进行记录。 源程序 首先介绍一下示例程序&#xff0c;示例程序是一个 HTTP 服务器&#xff0c;会显示si…

【GUI】-- 11 贪吃蛇小游戏之绘制静态的小蛇

GUI编程 04 贪吃蛇小游戏 4.2 第二步&#xff1a;绘制静态的小蛇 现在绘制静态的小蛇(即小蛇初始位置)&#xff0c;并且完善游戏默认初始状态。这一步还在GamePanel类中实现。 首先&#xff0c;定义了小蛇的数据结构&#xff0c; //定义蛇的数据结构int length; //小蛇总长…

yolo系列模型训练数据集全流程制作方法(附数据增强代码)

yolo系列的模型在目标检测领域里面受众非常广&#xff0c;也十分流行&#xff0c;但是在使用yolo进行目标检测训练的时候&#xff0c;往往要将VOC格式的数据集转化为yolo专属的数据集&#xff0c;而yolo的训练数据集制作方法呢&#xff0c;最常见的也是有两种&#xff0c;下面我…

开源与闭源:大模型发展的双重走向

目录 前言开源和闭源的优劣势比较开源的优势闭源的优势 开源和闭源对大模型技术发展的影响对技术发展的影响对数据共享的影响对业务拓展的影响 开源与闭源的商业模式比较开源的商业模式闭源的商业模式 处在大模型洪流中&#xff0c;向何处去&#xff1f;结语 前言 随着人工智能…

中国智能音箱市场销量下降,百度稳居第一 /中国即评出10个大模型创新案例 |魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件&#x1f525;&#xff0c;更新AIGC的最新动态&#xff0c;生成相应的魔法简报&#xff0c;节省阅读时间&#x1f47b; 中国智能音箱市场销量下降&#xff0c;百度稳居第一 中国即将评选出10个最具代表性的大模型创新案例…

【Typroa使用】Typroa+PicGo-Core(command line)+gitee免费图片上传配置

TyproaPicGo-Core(command line)gitee免费图片上传配置 本文是在win10系统下配置typroapicGo-Core(command line)gitee图片上传的教程。需要的环境和工具有&#xff1a; gitee账号&#xff0c;新建仓库及token令牌&#xff1b;已经安装了的typroa&#xff0c;需要0.9.98版本以上…

2023最全的性能测试种类介绍,这6个种类特别重要!

系统的性能是一个很大的概念&#xff0c;覆盖面非常广泛&#xff0c;包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等&#xff0c;性能测试就是描述测试对象与性能相关的特征并对其进行评价而实施的一类测试。 性能测试是一个统称&#xff0c;它其实包…

大数据Doris(二十五):Stream Load数据导入演示和其他导入案例

文章目录 数据导入演示和其他导入案例 一、数据导入演示

【Web】Ctfshow SSRF刷题记录1

核心代码解读 <?php $url$_POST[url]; $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); ?> curl_init()&#xff1a;初始curl会话 curl_setopt()&#xff1a;会…