更新阅读量时的常见错误:脏读


最近在对开发完的项目进行测试,于是用到了Jmeter来进行压力测试……

在这里插入图片描述

这里准备压测的是一个获取详情的方法,在获取详情的通知更新阅读量!

在这里插入图片描述

上图中代码的逻辑是:

     1. 根据ID获取实体
     2. 判断实体是否存在
     3. 使用三目运算获取当前阅读量
     4. 更新阅读量
     5. 获取详情


同时,我们再将当前操作的数据库表的阅读数展示出来。

↓↓↓↓↓往下看↓↓↓↓↓

在这里插入图片描述


然后就开始使用Jmeter进行压力测试,等待短暂的2秒钟后,产生了结果!

↓↓↓↓↓往下看↓↓↓↓↓

在这里插入图片描述


这里就出现问题了!

在这里插入图片描述

我们在Jmeter中模拟的100个用户,同时请求这个这个接口的实现方法

此时的数据库中read_count值应该为100,不知为什么现在只有4

于是乎,分析一下业务代码中出现了什么问题

在这里插入图片描述

这里是在程序中获取到阅读量,再在业务逻辑层中进行自增以后,再更新到数据库。

这样难免产生了一个问题,我们用两个用户来模拟一下这个问题:

用户A用户B
发起请求
数据库查询,获取阅读量=0
阅读量自增,修改阅读量=1
发起请求
数据库查询,获取阅读量=0
提交,此时数据库中的阅读量=1
阅读量自增,修改阅读量=1
提交,此时提交的阅读量=1覆盖了用户A的更新

既然找到了问题所在,那就直接把自增操作放到数据库中。

在这里插入图片描述
在这里插入图片描述

再次运行Jmeter进行压力测试,观察数据结果!

在这里插入图片描述

现在结果就正常了

系统并发量小,测试100个用户同时获取详情已然是极限。在系统用户量大的情况下还是应该去操作缓存!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骊恨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值