jmeter 测试乐观锁解决超卖的异常率Bug

当我将扣减库存的逻辑修改如下时,


// 5. 扣减库存 boolean success = seckillVoucherService.update() .setSql("stock = stock - 1") // set stock = stock - 1; .eq("voucher_id", voucherId).gt("stock", 0) // where id = ? and stock > 0 .update();

我用jmeter去测试时,发现异常率为100%,按理来说是50%,然后我去分析jmeter查看结果树的报告,发现HTTP请求错误的Response code 为 401,那我们在黑马点评里有设置返回状态码为401的一段代码如下,没错原来是我在jmeter没有设置authorization


// 前置拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 1. 判断是否需要拦截 (ThreadLocal 中是否有用户 if(UserHolder.getUser() == null){ // 没有 需要拦截 设置状态码 response.setStatus(401); return false; } // 有用户 放行 return true; }

1. 如何设置authorization

打开jmeter,右键添加

操作如下 

解决了 异常率也为50%,再次验证两张表

查看 tb_seckill_voucher 表,库存stock为0, tb_voucher_order也有100条数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值