jmeter性能测试技巧(欢迎提问,不定时更新)

news2024/11/28 21:35:01

问题1

如何在大并发测试下,让登录或者后续接口只执行一次?

分析

2023Jmeter性能测试项目实战教程,十年测试大佬手把手教你做性能!_哔哩哔哩_bilibili2023Jmeter性能测试项目实战教程,十年测试大佬手把手教你做性能!共计11条视频,包括:1.什么是性能测试以及性能测试的价值和目的、2.真实企业性能测试指标详解以及指标测算、3.真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1u8411f7u4/?spm_id_from=333.337.search-card.all.click

这个问题网上的答案其实很多,但是大多不靠谱。
比如推荐使用仅一次控制器,但是仅一次控制器对线程组无效;比如推荐跨线程组调用,但是这样比较繁琐,新人也搞不定;
其实只要各位对元件熟悉,这个问题很简单

下图100线程:

添加一个吞吐量定时器,选择总数计算

下面这就ok了,是不是很简单?

问题2

并发登录之后,后续接口在做并发的时候有一些cookie重复了,并发量越大,重复几率越高。如何保证后续并发的cookie不重复?

回答

原因其实是因为jmeter的多线程存在竞争机制,那么并发量很大的时候,就会有一部分线程下的请求抢到了同一个cookie
我们可以把这些cookie在并发登录之后本地保存一份,变成存量数据。

比如下图所示的cookie

写个小脚本把这些cookie保存下来
 

后续并发的时候直接引用这些cookie就行了
 

问题3

新人在jmeter压测过程中有哪些大的性能消耗?

分析

我们接着问题2做个拓展。压测过程中如果加入了数据的读写,会不会影响性能结果?
我们知道,读写本地文件是需要和磁盘做交互的。磁盘在系统中处于最底层,速度是最慢的。频繁的磁盘交互会极大的增加性能开销,影响测试结果。
所以问题2的解决方案是不可行的,会降低实际的tps。

解决方案

首先把cookie存到系统属性里面。存属性就相当于存到了应用缓存,缓存的查询效率是最高的。
\({__setProperty(cookie,\){cookie},)}



后续请求处理cookie的时候,直接从属性表里面提取
${__P(cookie,)}

问题4

如何识别tps拐点

分析

先分析下面这张图。下面这张图上展示了阶梯负载量,响应时间,tps三种数据


从图上能看出来三个趋势
1:tps升到一个相对高点之后,长期维持稳定,不再升高
2:运行一段时间之后,响应时间开始逐渐升高,但是趋势不明显
3:随着负载越来越高,tps长期保持稳定
分析
在负载逐渐升高的情况下,tps却长期不变。这并不是说明性能很稳定,而是说明我们单位时间内的单线程tps是在逐渐降低的(单位时间tps/总线程)。
再分析响应时间,我们的响应时间其实也是在逐渐升高,从侧面反映出线程的tps是在下降的。
但是具体在多少负载量的时候我们的瓶颈点已经到来?这张图上不好计算,我们换一个监听器

这张图的趋势就比较明显了。随着负载升高,线程的tps逐渐达到一个高点,然后开始下降。那么这个最高点就是我们的性能瓶颈点

问题5

非GUI模式下做性能测试,怎么修改线程数,持续时间这些参数?

回答

把关键参数都设置成变量,在非GUI下引用就行了,就像下面介样子



写一个shell脚本,参数全部引用一下


bat执行的时候就像下面这个样子,hin轻松有没有~

问题6

jmeter4444端口无法监听远程服务器怎么解决

回答

4444端口在阿里云和腾讯云服务上,是默认不开放的。想要监听到,有两种办法,一种是防火墙开放4444端口,一种是更换端口。命令如下
./startAgent.sh --udp-port 0 --tcp-port 1234

问题7

远程机执行jmeter脚本,怎么自动切换csv参数路径格式?

只需要在参数路径中加入一组函数,就可以实现参数路径自动定位,如下

{__P(user.dir,)}{__P(user.dir,)}{__P(file.separator,)}test.txt`


这一组函数的作用是,不论在linux还是在本机,都可以自动切换路径格式,不需要手动修改

问题8

Delay Thread creation until needed 是什么意思?
jmeter的线程组里面有一个Delay Thread creation until needed选项,如下图。


很多人不理解这个选项是什么意思,或者根据官方解释,认为它是延迟创建线程。但是延迟创建,在哪里体现出来你?完全搞不清。
我们可以通过jdk的监听器看一探究竟。

不勾选延迟创建

线程组设置1500线程,ramp up设置10s,不勾选延迟创建,循环次数设置为永远。如下图


运行脚本之后,我们在活动线程监听器里面可以看到线程确实是10s内创建完成,如下图

但是我们在jdk工具里面再看一下线程创建的过程,会发现线程几乎在1s内就全部启动完成了,如下图

勾选延迟创建

线程组设置1500线程,ramp up设置10s,勾选延迟创建,循环次数设置为永远。再次运行脚本,如下图

结论

通过对比可以发现,只有rump-up和delay-thread组合使用,才可以让线程真正的实现延迟。jmeter上看到的延迟都是幻象。

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

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

相关文章

SQL综合案例之电商漏斗转化分析,pv,uv及

漏斗模型示例: 不同的业务场景有不同的业务路径 : 有先后顺序, 事件可以出现多次 注册转化漏斗 : 启动APP --> APP注册页面--->注册结果 -->提交订单-->支付成功 搜购转化漏斗 : 搜索商品--> 点击商品--->加入购物车-->提交订单-->支付成功…

Scrum中可以有测试人员吗?

作者 | Federico Toledo Scrum 是将质量融入产品开发和创建敏捷团队的宝贵框架。测试人员如何适应这一切?让我们深入研究这篇文章。 毫无疑问,Scrum是在任何环境中为团队寻求业务敏捷性,以及应对不同复杂挑战的最重要工具之一。 正如《福布斯…

在pycharm里安装pytorch环境-GPU版

1、安装Anaconda 在官网下载安装:https://www.anaconda.com/download 2、安装pycharm https://www.jetbrains.com/pycharm/download/#sectionwindows 使用社区版即可。 3、检查conda环境 按winr,输入cmd回车打开命令窗 在命令窗内输入conda 环境无问…

小学课后兴趣班选课平台的设计与实现(ASP.NET,SQLServer)

系统功能模块设计 中小学课后兴趣班选课平台包括前台功能模块和后台功能模块:前台功能模块是给会员使用的功能模块,在前台功能模块中会员可以实现在线注册,登录,查看发布的新闻资讯信息,查看教师,在线留言&…

软件测试的 20 个误区

软件测试中常遇到的 20 个误区,争取能给想从事软件测试的小伙伴一点启发。 1、测试人员不需要了解软件开发知识 抛开自动化测试,测试开发等,这些是必须要学习软件开发知识。功能测试和接口测试等还是需要软件开发知识的,例如新建…

电动汽车、车载充电器及其过流保护电路介绍

摘要:本文通过比亚迪公司的专利了解电动汽车、车载充电器及其过流保护电路,其中,车载充电器包括AC/DC变换器和DC/DC变换器,AC/DC变换器和DC/DC变换器均采用光耦驱动的SiC开关管,过流保护电路包括:电流检测单…

ChatGPT与网络安全

文章目录 一、“AI用于攻击”二、“AI用于安全(防御)”三、“AI的防御”四、“AI被攻击” ChatGPT作为基于生成式预训练模型(GPT)的聊天机器人,其核心技术是自然语言处理(NLP)。随着NLP技术的不…

OS实战笔记(9)-- 构建二级引导器

Grub内核映像格式 Grub工作的时候,需要一个内核映像文件,其中包括了二级引导器模块、内核模块、图片和字库等。这些不同的文件都被放到了一个映像文件中,为了Grub能够正常加载,需要一个预先定义好的格式,以便Grub能解析…

代码实现 ResNet 详解

零、ResNet的介绍 ResNet代码(含详细的使用说明): https://github.com/GarsonWw/resnet-garson.git 当谈到深度学习中的卷积神经网络时,ResNet(Residual Network)是一个备受赞誉且引人注目的架构。ResNet…

最全的mysql编码集问题排查

用navicate导入一个json文件数据的时候,发现中文有一些是乱码的,查了很多资料,发现mysql、navicate编码集都没问题,包括导入流程,那是什么原因呢?想着难道是电脑的编码集影响了?于是调整以后&am…

【C语言】结构体——我就是秩序的创建者!(结构体数组、结构体指针、嵌套、匿名、字面量、伸缩型数组、链式结构)

一、结构体基础1.1 声明和定义1.1 初始化和赋值1.3 访问结构体成员 二、结构体数组2.1 定义和初始化2.2 访问 三、结构体的嵌套五、指向结构体的指针六、向函数传递结构体6.1 只传递结构体成员6.2 传递结构体指针6.3 传递结构体 七、结构体的其他特性——不容小觑7.1 结构体的大…

硬盘数据丢失怎么办?一招轻松恢复硬盘数据!

硬盘应该是最为常用的数据存储设备了,它为电脑等设备提供巨大的存储空间。我们在平时的工作和学习中也经常会使用硬盘来存储数据,很多用户会将多年搜集到的资料存到电脑硬盘里。 硬盘上的文件,不论是工作文档还是照片、视频,对用…

(四)ArcGIS空间数据的转换与处理——数据结构转换

ArcGIS空间数据的转换与处理——数据转换 空间数据的来源很多,如地图、工程图、规划图、航空与遥感影像等,因此空间数据也有多种格式。根据应用需要,需对数据进行格式转换,不同数据结构间的转换主要包括矢量数据到栅格数据的转换…

Guava的骚操作,大大提升了我摸鱼的时间

以面向对象思想处理字符串对基本类型进行支持总结 概述 1、Guava是google公司开发的一款Java类库扩展工具包,包括新的集合类型(如 multimap 和 multiset)、不可变集合、图形库,以及用于缓存、并发、I/O等实用程序。使用这些API一…

内存溢出导致的Full GC异常

背景 线上服务GC耗时过长,普遍10s,此外GC后,内存回收不多 问题一 通过查询gc日志可以发现,CMS进行垃圾回收的时候报concurrent mode failure错误,该错误是因为CMS进行垃圾回收的时候,新生代进行GC产生的对象…

JupyterLab(Jupyter Notebook)安装与使用

文章目录 前言安装JupyterLab切换中文语言JupyterLab desktop 使用演示其它补充后记 前言 目前在看《程序员数学:用Python学透线性代数和微积分》这个书,它里面的代码是在Jupyter中编写的,所以也安装下用用。 JupyterLab是一个可以同时编写…

[PyTorch][chapter 37][经典卷积神经网络-2 ]

1: VGG 2: GoogleNet 一 VGG 1.1 简介 VGGNet 是牛津大学计算机视觉组(Visual Geometry Group)和谷歌 DeepMind 一起研究出来的深度卷积神经网络,因而冠名为 VGG。VGG是一种被广泛使用的卷积神经网络结构,其在在20…

生成式模型的质量评估标准

Sample Quality Matrix 如何评价生成式模型的效果?ISFIDsFIDPrecision & RecallPrecisonRecall计算precision和recall 如何评价生成式模型的效果? Quality: 真实性(逼真,狗咬有四条腿) Diversity: 多样性&#x…

全网为数不多清晰可行的在VUE中使用sortable.js实现动态拖拽排序的教程!

目录 0 写在前面的 1 依赖安装 2 手写简单标签演示 3 要点 4 效果 0 写在前面的 首先批评以下文章 (10条消息) sortable.js 实现拖拽_sortablejs_花铛的博客-CSDN博客 (10条消息) sortablejs拖拽排序功能(vue)_C_fashionCat的博客-CSDN博客 他们…

Spring6入门 + Log4j2

1、环境要求 JDK:Java17(Spring6要求JDK最低版本是Java17) Maven:3.6 Spring:6.0.2 2、构建模块 (1)构建父模块spring6 在idea中,依次单击 File -> New -> Project ->…