Seata入门系列(26)-Seata压力测试

前言

在了解了Seata 的使用和基本原理后,尝试进行了一把简单的压测,看看在高并发情况下是否有其他问题。

测试环境

个人电脑

  • Intel® Core™ i7-8750H CPU @ 2.20GHz 2.21 GHz
  • 内存:16.0 GB
  • 系统:Windows 10 专业版

组件

  • JDK 1.8
  • nacos 2.0.3
  • Seata 1.4.2(Nacos 注册中心,本地文件配置中心,记录数据库存储会话)
  • Spring Boot 2.2.13
  • Mariadb 10.1
  • 账户、订单、库存单体服务部署

提交测试

全局事务的路径为,用户服务扣除余额=》订单服务添加一个订单=》库存服务扣除库存。

并发总数设置为1W次,并发请求数每次增加10。

并发 10

在该并发量下,成功下单1W,也没有什么异常,检查数据,也没有数据不一致的问题。
在这里插入图片描述

并发 20

在该并发量下也没有什么异常,但是偶尔某个响应时间明显长了很多。
在这里插入图片描述

并发 30

聚合报告:
在这里插入图片描述

前面开始的线程:
在这里插入图片描述

最后的线程:
在这里插入图片描述
订单数:
在这里插入图片描述
从上可以看到,当并发请求数达到30时,吞吐量仍然在20/S 左右,并且响应时间很长,存在异常,有一个订单失败。猜测响应时间过长的原因在于全局锁的竞争等待。

并发 100

在该请求并发情况下,吞吐量明显下降,异常率也飙升,失败了1000多个订单。但数据任然保持了一致性。
在这里插入图片描述

回滚测试

在库存服务中,抛出异常,测试在全局回滚的状态下,是否有并发问题。

并发10

数据无异常,全部回滚成功:
在这里插入图片描述

并发30

数据无异常,全部回滚成功:
在这里插入图片描述

并发100

数据无异常,全部回滚成功,吞吐量在50/S。
在这里插入图片描述

不需要全局事务测试

为了对比性,最后去掉分布式事务注解,测试下本地事务吞吐量。

并发100

可以看到吞吐量在80/S,比分布式事务场景下还是高了不少。
在这里插入图片描述

总结

1. 数据一致性

在高并发下,能保持全局事务数据一致性,没有发现脏数据。

2. 吞吐量

在高并发下,吞吐量大概在20/S,性能一般,所以能不使用分布式事务就不要使用。

3. 成功率

在并发请求数超过20 时,会爆发异常,100 并发数下,异常率为18%。

4. 响应时间

随着并发增加,响应时间也会增加很多,主要原因在于,分布式事务需要全局锁。

5. 注意事项

  • 总体性能不高,在高并发场景下需要搭建集群环境
  • 针对某一数据的并发操作,吞吐量很低,需要做限流处理,不然会很卡或者报错
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云烟成雨TD

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

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

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

打赏作者

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

抵扣说明:

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

余额充值