jmeter性能测试过程中遇到的问题及解决方法

news2025/1/13 7:46:13

问题1

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

分析

这个问题网上的答案其实很多,但是大多不靠谱。

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

下图100线程:

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

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

问题2

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

回答

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

比如下图所示的cookie

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

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

问题3

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

分析

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

解决方案

首先把cookie存到系统属性里面。存属性就相当于存到了应用缓存,缓存的查询效率是最高的。
{__setProperty(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/1090453.html

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

相关文章

让ChatGPT等模型学会自主思考!开创性技术“自主认知”框架

ChatGPT、百度文心一言、Bard等大语言模型展现出了超强的创造能力,加速了生成式AI的应用进程。但AI模型只能基于训练数据执行各种任务,无法像人类一样利用生活知识、过往经验用于复杂的推理和决策。 例如,在玩游戏时,人类可以利用…

mysql中的几种排名函数

mysql中的排名函数 mysql里面的排名函数&#xff0c;涉及有以下几个&#xff1a; rank()、dense_rank()、row_number() 1、rank() 函数 RANK() OVER (PARTITION BY <expression>[{,<expression>...}]ORDER BY <expression> [ASC|DESC], [{,<expression…

如何用 ChatGPT 的 Advanced Data Analysis 帮你采集数据?

&#xff08;注&#xff1a;本文为小报童精选文章&#xff0c;已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 想采集网页数据却不会写 Python 爬虫&#xff1f;不会就不会吧&#xff0c;ChatGPT 会就可以了 &#x1f602; 问题描述 朋友最近遇到了一点儿…

thinkphp6 获取url路径中的应用名、控制器名、操作名

如果使用了多应用模式&#xff0c;可以通过下面的方法来获取当前应用 app(http)->getName(); 获取当前控制器 Request::controller(); 获取当前操作 Request::action(); 请求信息 ThinkPHP6.0完全开发手册 看云 ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上…

Ansible基础及模块

Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作&#xff0c;使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作 Ansible是基于模块工作的&#xff0c;它…

JZ64 求1+2+3+...+n

JZ64 求123…n //实例化对象时会自动调用构造函数 class Solution { public:class Sum{public://每调用一次构造函数 _sum加等一个数Sum(){_sum _i;_i;}};//Solution类的成员函数int Sum_Solution(int n){_i 1;_sum 0;//数n是几 我就构造几个对象//构造几个对象就会调用…

SVN报错fail to run the WC Db work queue associated with,清理失败,乱码的解决方式

替换掉 wc.db 文件即可 SVN报错fail to run the WC Db work queue associated with&#xff0c;清理失败&#xff0c;乱码的解决方式_svn failed to run the wc db-CSDN博客

Kubernetes 集群部署 Prometheus 和 Grafana

Kubernetes 集群部署 Prometheus 和 Grafana 文章目录 Kubernetes 集群部署 Prometheus 和 Grafana一.部署 node-exporter1.node-exporter 安装2.部署 node-exporter 二.部署Prometheus1.Prometheus 安装和配置&#xff08;1&#xff09;创建 sa 账号&#xff0c;对 sa 做 rbac…

智能物联网解决方案:蓝牙IOT主控模块打造高效监测和超低功耗

物联网蓝牙模块&#xff0c;无论单模&#xff0c;还是双模&#xff0c;或者双模音频的选择&#xff0c;如下文说描述&#xff1a; 蓝牙芯片模块市场的百花齐放&#xff0c;也带来的工程师在选型时碰到很大的困难&#xff0c;但是无论是做半成品&#xff0c;还是做成品&#xf…

Java GC 算法

一、概述 理解Java虚拟机垃圾回收机制的底层原理&#xff0c;是成为一个高级Java开发者的基本功。本文从底层的垃圾回收算法开始&#xff0c;着重去阐释不同垃圾回收器在算法设计和实现时的一些技术细节&#xff0c;去探索「why」这一部分&#xff0c;通过对比不同的垃圾回收算…

BAT020:将文本文档中多行文本拼接为;分隔的单行文本

引言&#xff1a;编写批处理程序&#xff0c;实现将文本文档中多行文本拼接为;分隔的单行文本。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击【…

[软考中级]软件设计师-uml

事物 uml中有4中事物&#xff0c;结构事物&#xff0c;行为事物&#xff0c;分组事物和注释事物 结构事物是uml模型中的名词&#xff0c;通常是模型的静态部分&#xff0c;描述概念或物理元素 行为事物是uml的动态部分&#xff0c;是模型中的动词&#xff0c;描述了跨越时间…

记一次Hbase2.1.x历史数据数据迁移方案

查看待迁移的表 list_namespace_tables vaas_dwm2. 制作待迁移表“DWM_TRIP_PART”的快照 snapshot vaas_dwm:DWM_TRIP_PART,dwm_trip_part_snapshot3. 统计待迁移表数据总数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter vaas_dwm:DWM_TRIP_PART

phantom3D模体

phantom是人头模型&#xff0c;分为2D和3D两种&#xff0c;matlab中可直接调用phantom(size)生成2D数据&#xff0c;如图1&#xff0c;而三维需要对应函数文件&#xff0c;下载&#xff1a;3D 图1 2D phantom 3D模体为一个椭球体&#xff0c;只能生成xyz三个方向相同维度的模…

2023年东数西算研究报告

第一章 行业概况 1.1 定义 “东数西算”是近年来在中国大数据和数据中心领域中引起广泛关注的一个概念&#xff0c;其背后的理念与国家级的资源优化配置战略紧密相连。这一概念是“全国一体化大数据中心协同创新体系”下的一个重要组成部分。该创新体系旨在推进技术、业务、数…

pdf压缩文件怎么压缩最小?pdf压缩方法汇总

PDF是一种常见的文件格式&#xff0c;通常用于电子文档和印刷品&#xff0c;由于PDF文件通常包含大量的元数据、字体、图像和其他元素&#xff0c;因此它们的大小可能会非常大。 为了解决这个问题&#xff0c;我们可以使用一些PDF压缩工具来帮助我们&#xff0c;以便我们能够更…

Springcloud笔记(2)-Eureka服务注册中心

Eureka服务注册 Eureka作为一个微服务的治理中心&#xff0c;它是一个服务应用&#xff0c;可以接收其他服务的注册&#xff0c;也可以发现和治理服务实例。 服务治理中心是微服务&#xff08;分布式&#xff09;架构中最基础和最核心的功能组件&#xff0c;它主要对各个服务…

强缓存和协商缓存

强缓存和协商缓存 缓存分为强缓存和协商缓存。强缓存不过服务器&#xff0c;协商缓存需要过服务器&#xff0c;协商缓存返回的状态码是304。两类缓存机制可以同时存在&#xff0c;强缓存的优先级高于协商缓存。当执行强缓存时&#xff0c;如若缓存命中&#xff0c;则直接使用缓…

京东数据平台:2023年9月京东洗衣机行业品牌销售排行榜

鲸参谋监测的京东平台9月份洗衣机市场销售数据已出炉&#xff01; 9月份洗衣机行业销售呈下滑状态。鲸参谋数据显示&#xff0c;9月京东平台洗衣机的总销量为116万&#xff0c;环比下滑约1%&#xff0c;同比下滑约13%&#xff1b;月销售额为17亿&#xff0c;环比下滑约7%&…

【漏洞复现】安全云平台存在任意文件下载getshell

漏洞描述 深圳市强鸿电子有限公司鸿运主动安全云平台存在任意文件下载漏洞,攻击者可通过此漏洞下载敏感文件信息。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权…