0


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

什么要对接口压测呢?

  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 就是来验证软件系统的稳定性和可靠性。


本文转载自: https://blog.csdn.net/weixin_50002038/article/details/130558061
版权归原作者 你才是臭弟弟 所有, 如有侵权,请联系我们删除。

“JMeter压力测试案例(商品超卖并发问题)”的评论:

还没有评论