专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
51好读  ›  专栏  ›  ImportNew

SpringBoot Seata 死锁问题排查

ImportNew  · 公众号  · Java  · 2024-01-22 21:47

正文

请到「今天看啥」查看全文






用 jvisualvm 查看也可以,不再赘述,结果都是一样的。




好了,工具介绍到此为止,下面重点 看代码



main 线程持有 <0x00000000c07a33d8> 这个对象的锁,同时它还需要 <0x00000000ff295ca8> 对象的锁;而 timeoutChecker_1_1 线程正好相反,于是死锁了


main 线程很好理解,就是我们这个 Spring Boot 应用的主线程。但是timeoutChecker_1_1线程是哪儿来的呢?通过分析发现它来自 Seata。


对了,该项目中 Spring Boot 版本是 2.6.6, Seata 版本是 1.4.2


找到 timeoutChecker 的出处了:





延迟 60 秒启动定时任务,每隔 10 秒执行一次,调用 io.seata.core.rpc.netty.NettyClientChannelManager#reconnect()。



记住这一行,首先调用 RegistryFactory.getInstance() 获取一个 RegistryService,然后调用 RegistryService 对象的 lookup() 方法。









请到「今天看啥」查看全文