热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

文章目录前言测试环境提交测试并发10并发20并发30并发100回滚测试并发10并发30并发100不需要全局事务测试并发100总结1.数据一致性2.吞吐量3.成功率4.响应时间5.注

文章目录

    • 前言
    • 测试环境
    • 提交测试
      • 并发 10
      • 并发 20
      • 并发 30
      • 并发 100
    • 回滚测试
      • 并发10
      • 并发30
      • 并发100
    • 不需要全局事务测试
      • 并发100
    • 总结
      • 1. 数据一致性
      • 2. 吞吐量
      • 3. 成功率
      • 4. 响应时间
      • 5. 注意事项


前言

在了解了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. 注意事项


  • 总体性能不高,在高并发场景下需要搭建集群环境
  • 针对某一数据的并发操作,吞吐量很低,需要做限流处理,不然会很卡或者报错

推荐阅读
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 2010年下半年软件评测师试题标准答案阅卷用标准答案,更多答案登录http:www.enpass.cn查看,软考培训权威机构由于发博文的限制,有些图片不能发上来,下载完全版答 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • shell脚本实战 pdf_Shell 脚本操作数据库实战
    安装mariadb数据库(默认没有密码,直接mysql即可进入数据库管理控制台)yuminstallmariadbmariadb-serv ... [详细]
  • MySQL45讲之备库并行复制策略-前言本文主要介绍MySQL备库的并行复制策略。为什么备库需要并行复制如果主库有大量更新操作,因为主库可以并发写入,而备库只能单线程执行的 ... [详细]
author-avatar
冬-冰释_488
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有