JMeter压力测试案例(商品超卖并发问题)

news/2024/11/29 10:56:15/

什么要对接口压测呢?

  1. 压力测试可以用来验证软件系统的稳定性和可靠性,在压力下测试系统的性能和稳定性,发现并解决潜在的问题,确保系统在高负载情况下不会崩溃。
  2. 压力测试可以用来评估软件系统的容量和性能,通过模拟高负载情况下的用户访问量和数据量,测试系统的处理能力和响应速度,找出系统的瓶颈和性能弱点,并进行优化和改进。
  3. 压力测试可以用来确认软件系统的可用性和可用性,通过模拟用户的不同操作场景和异常情况,测试系统的稳定性、响应速度、错误处理能力和容错能力,确保系统能够在不同条件下正常运行,满足用户的需求。
  4. 压力测试可以用来研究新的技术和算法,在高负载情况下测试新的软件系统和技术的性能和稳定性,找出性能瓶颈和优化点,为软件系统的优化和改进提供依据。

相关说明

技术栈: 采用Nginx + Springboot + redis  + JMeter   对接口进行压力测试:

1、Nginx: 做负载均衡  、Nginx会负载到 8080 8081 这两个服务上去 。

2、Springboot  : 后台启动两个实例  8080 和 8081 。

3、redis: 设置key value 商品库存值为600 。   

4、JMeter: 对商品接口进行压测。

注意:  使用Jmeter对商品接口进行压测、重点是使用JMeter压测工具、其他不是重点那就开始吧。 

 

 

JMeter创建压测计划

 1、第一步肯定是先打开压测工具了。

 2、创建线程组

选中测试计划右击添加线程组   Add  Threads(Users)  Thread Group

b9b06d4a171c4930ad56b294c13b6d36.png

 

 

  2、设置线程数和循环次数。我这里设置线程数为200,在一秒执行完200个线程,循环一次

f6cbdb230c794e13a806aab1c6a0d402.png

 这图什么意思呢? 就是说JMeter启动200个线程在一秒内,同时往后台商品接口发送请求。

 

 

 3、创建Http请求

选中线程组 右击   Add Samlper HTTP Request

0fab849c1505474992aaa5669076eaf4.png

 

 

  4、输入协议、IP地址及端口号、选择请求方法、输入路径,内容编码一般为utf-8,输入请求参数

我这里就使用HTTP直接压了, 输入请求类型get 或 post  然后输入请求地址  

4843f31f28f14b169aade651d2e877de.png

 

   5、在压测开始之前 需要添加一个聚合报告

   选中HTTP Request 右击   Add  Listener   Aggregate Repor

   Aggregate Repor:聚合报告  View Results Tree:结果树

8a423e86e9714befae98b25d655bb685.png

 添加完聚合报告和结果树后 ,开始启动运行!

 

 

开始

069961fa67a345a2a73509d7731daae4.png

 你会发现弹框了, 这是询问是否要保存这次压测计划,也就是说下次还可以接着复用。 

9aff5ac1e6f44cb29eafa25b9b1f6909.png

 

 聚合报告

执行完毕的聚合报告, 1秒压完200个请求 刚开始结束了!

c7e5a0af0bdf4e74be39ddb8caff7e91.png

 

后台商品扣减日志

8080服务后台的日志

cfb050c2c8cb4472998ead10d8c6875c.png

 

8081服务后台的日志

49b4a5e265c24e699208ba8dd191a6f1.png

 

总结:  通过JMeter 压测模拟出 商品接口超卖问题, 上图可以看出 我8080服务 已经扣减了库存,在看8081服务 也有相同扣减的数量 。  说明什么问题? 是不是测出了接口存在并发问题。这就相当于我有很用户来抢东西 ,这接口明显就是没有做分布式锁,导致所有线程都来抢导致超卖,所以说JMeter 就是来验证软件系统的稳定性和可靠性。

 

 

 

 

 

 


http://www.ppmy.cn/news/64847.html

相关文章

微信小程序开发19__第三方UI组件Vant Weapp的应用

为了提高小程序的开发效率, 可以考虑使用第三方 UI 组件来实现界面的视觉统一。 本文以有赞第三方 UI 组件库 Vant Weapp 为例,介绍如何使用自定义组件 实现一个小程序。 Vant Weapp 是一款轻量、 可靠的小程序UI组件库, 与有赞移动端组…

AndroidStudio如何进行手机应用开发?

文章目录 0.引言1.AndroidStudio开发环境配置2.创建第一个手机应用 0.引言 Android手机应用因其搭载于手机,使用便捷,应用被大量开发使用。笔者使用手机多年,用过许多手机软件,在使用的过程中,虽然手机软件能解决大部分…

c++ static修饰类的成员

静态成员就是成员变量和成员函数前面加上static,称为静态成员 1.static修饰成员变量 (1)所有对象共享static成员变量,一旦一个对象数据对其进行改动,所有对象调用其数据也会改变,一改全改。 (2)编译阶段分配内存,static成员变量…

车牌识别:现代科技的“火眼金睛不”

如果说,识别汉字并不是一件难事的话,那么识别车牌号码对于计算机来说应该是一件比较容易的事,毕竟车牌只不过是两三个数码而已,然而事实上,让计算机准确无误地识别一副车牌号码,尤其是在没有档案资料作参考…

Day42 生产者消费者

生产者消费者 Object类中的等待和唤醒方法 方法名说明void wait ()导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法void notify ()唤醒正在等待对象监视器的单个线程void notifyAll ()唤醒正在等待对象监视器的所有线程 案例&#xff1…

上林赋 汉 司马相如

亡是公听然而笑曰:“楚则失矣,而齐亦未为得也。夫使诸侯纳贡者,非为财币,所以述职也。封疆画界者,非为守御,所以禁淫也。今齐列为东藩,而外私肃慎,捐国逾限,越海而田&…

GUN C编译器拓展语法学习笔记(二)属性声明

属性声明 一、属性声明1、存储段:section1.1 GNU C编译器扩展关键字:__attribute__1.2 属性声明:section1.3 U-boot镜像自复制分析 2、属性声明:aligned2.1 地址对齐:aligned2.2 结构体对齐:aligned2.3 属性…

【话题讨论】-浅谈VR与AR

一、引言 随着ICT基础技术的发展,我们现在社会中的基础ict设施已经逐步完善,从而我们的社会也开始出现科幻片中才会有的场景,比如:我们可以构件一个虚拟3D沙盘。 还有我们熟悉的各类智能眼镜,已经进入到千家万户&…