202309025 测试数据库超时并发遇到的问题

项目场景:

在测试企信放款时,前端服务起了两个,访问同一个后台接口,导致出现MySQL数据库并发错误


问题描述

在这里插入图片描述

原因分析:


这个错误是由于MySQL事务超时导致的锁表问题引起的。在MySQL中,当一个事务在执行期间锁定了某些行,而其他事务试图在锁定时间超过设定的超时时间后访问这些行时,就会出现锁等待超时的错误。 要解决这个问题,首先需要描述问题并重现它。可以通过模拟锁表和调用HTTP接口修改用户表数据来重现问题。 解决方法有两种。第一种是通过杀掉对应的线程(Thread Id)来解决问题,这是一个临时的解决方法。第二种方法是更改数据库的超时时间,可以通过修改MySQL的配置文件或者直接在数据库中执行相应的语句来实现。 如果需要模拟锁表问题,可以按照以下步骤进行操作:首先,关闭自动提交功能,然后执行更新操作而不进行提交,这样会一直锁定表。最后,查询锁表情况,可以使用INFORMATION_SCHEMA.INNODB_TRX视图来查看当前的事务信息。 总结起来,Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction这个错误是由于MySQL事务超时导致的锁表问题引起的。解决方法包括杀掉对应的线程或更改数据库的超时时间。要模拟锁表问题,可以关闭自动提交功能,执行更新操作而不提交,并查询锁表情况。1234:


解决方案:

select * from information_schema.INNODB_TRX  //查询出超时进程ID

kill 132956        //杀死进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值