springcloud+nacos(1.4.2)+seata(1.3.0),在业务入口处添加@GlobalTransactional与下游服务的@Transactional连用,没加@GlobalTransactional之前发请求没问题,加上之后报错信息如下
org.springframework.transaction.TransactionSystemException: Could not commit JDBC transaction; nested exception is io.seata.rm.datasource.exec.LockWaitTimeoutException: Global lock wait timeout
已经采取过的措施: client.rm.lock.retryPolicyBranchRollbackOnConflict=false
调整Seata的全局锁等待超时时间
检查业务逻辑和代码,确保每个事务的执行时间尽可能短,并且避免不必要的全局锁。
考虑优化数据库的性能,确保数据库操作不会成为性能瓶颈。
分析具体的锁等待和竞争情况,可以通过Seata的日志来查看是哪些事务在竞争锁,并根据实际情况进行优化。
表明在您的程序中存在全局事务锁定等待超时的情况。可以采取以下几个措施来解决问题:
检查业务代码是否有死锁,并适当修改。
调整锁定超时时间,避免长时间的等待。
调整Seata的全局锁的并发级别,避免锁定冲突。
增加更多的服务器节点,并增加系统的并发能力。
调整业务程序的执行方式,以避免事务被长时间锁定。
这些是解决该问题的一些基本思路,希望能帮助到您。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。