为什么Seata中事务回滚耗时2分钟,2分钟后globaltable数据才被清理,无法继续开启事务?
Seata 中事务回滚耗时2分钟且 global_table 数据在 2 分钟后才被清理的情况,通常是因为 Seata 的事务恢复和回滚机制中的一些配置造成的。以下可能是导致此问题的原因之一:
如果您的应用程序频繁执行大量的事务,并且在事务回滚时有很多逆向日志需要处理,这可能导致回滚操作的耗时较长,并且在数据同步和清理完成之前无法继续开启新的事务。
可以尝试修改 Seata 的配置,将 store.mode
设置为 db
,以使用数据库存储模式。这样可以减少数据同步和清理所需的时间,从而提高事务回滚的性能和效率。
rollbackRetryTimeout
的配置项,默认值为 120 秒(2 分钟)。该配置项定义了事务回滚的超时时间,即在该时间内尝试回滚事务。如果在超时时间内无法成功回滚事务,则可能会导致后续的事务无法开启。可以尝试调整 rollbackRetryTimeout
的值,以适应具体的业务场景和需求。较短的超时时间可以使事务回滚更及时,但也可能增加回滚失败的风险;较长的超时时间则可以提高回滚成功的几率,但会延长事务回滚的耗时。
需要注意的是,Seata 的配置项可以根据具体的需求进行调整,以优化分布式事务的性能和可靠性。建议仔细查阅 Seata 的官方文档,并参考相关的最佳实践来配置和使用 Seata。
回滚不会耗时2分钟,只是事务2分钟后被删除而已,其实早就回滚完了,不可能无法继续开启事务的 ,此回答整理自钉群“3群-Seata 开源讨论群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。