【开发避坑】应用端报错“Transaction timeout”,但数据库负载不高,是 OceanBase 的死锁检测机制太敏感了吗?

我们在使用 Spring Boot + MyBatis 连接 OceanBase 3.2 集群时,偶尔会遇到 OB_ERR_TRANSACTION_TIMEOUT 错误。监控显示当时集群的 CPU 利用率只有 30%,内存也很充足,并没有发生大规模合并(Major Freeze)。

我们的业务逻辑主要是批量更新库存,事务内包含多次行锁操作。我怀疑是不是 OB 的默认事务超时时间(ob_query_timeoutob_trx_timeout )太短了?但我看官方文档说默认是 24 小时啊。有没有大佬遇到过类似情况,这到底是网络抖动引起的,还是分布式事务的两阶段提交(2PC)卡住了?

5 个赞

我等一个答案

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

1 个赞

看情况解决

1 个赞

一起等

可以试着调一下事务超时参数

1 个赞