【Java秒杀方案】13.Jmeter压力测试 接口优化效果 数据跟踪 接口限流补充说明(计数器,漏桶,令牌桶)

商品列表测试 /goods/toList

1.没有缓存前 吞吐量 2293

在这里插入图片描述

2.添加redis缓存之后 吞吐量 6693(之前是2293)

在这里插入图片描述

商品详情测试 goods/toDetail/1

没有做静态化 吞吐量 2048

在这里插入图片描述

做了静态化,同时redis缓存商品对象 吞吐量3356,能达到6949

静态化 goodsDetail.html?goodsId=1
在这里插入图片描述

在这里插入图片描述

秒杀接口测试 /seckill/doSeckill

1.没有做接口优化 吞吐量1300 出现超卖 库存为负数

在这里插入图片描述

商品超卖 10个库存,卖掉483个
在这里插入图片描述
商品库存为负数 -7
在这里插入图片描述

2.返回RespBean.success(order) 吞吐量达到2200

在这里插入图片描述

3.商品秒杀完成,只有查询 吞吐量达到3148

在这里插入图片描述

4.秒杀静态化,同时添加防止超库存卖,添加从redis缓存中判断是否重复秒杀 吞吐量达到2900 ,出现超卖,库存为0

在这里插入图片描述
订单表 超卖84
库存表中库存为0 都为不同用户秒杀

接口优化后,秒杀压测 3500 qps

在这里插入图片描述
redis 10条订单
在这里插入图片描述
数据库 10条订单
在这里插入图片描述
库存为0 没有超卖
在这里插入图片描述

接口优化后,redis预减库存,通过lua脚本 吞吐量 4093

在这里插入图片描述

接口限流问题补充说明:

redis计数器 临界问题

1分钟100次
第一个一分钟50-60秒 100个请求
第二次一分钟0-10秒 100个请求
整体来看,中间的一分钟之内达到了200个请求

漏桶算法,队列机制

水小,洞大,资源浪费
在这里插入图片描述

令牌桶

稳定生成令牌桶 如果没有满,生成令牌 token
请求拿令牌,如果拿到令牌,业务处理
可以应对短时间大量请求
同时又像漏桶,稳定生成令牌
在这里插入图片描述

总结

漏桶 保护他人
令牌桶 保护自己 将请求压力交给服务器处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值