我们有一个与AWS RDS中托管的MariaDB 10.4.28协同工作的Java应用程序.
我们遇到了应用程序崩溃的情况,原因是"无法创建事务异常".该池有40个活动连接和0个空闲连接.
我们有几个在这种时刻启动的工具来帮助调试这种情况:
- 线程堆栈转储
- 转储显示根本没有实际线程运行任何查询,所有线程都在等待池中的连接.
- "显示进程列表"
- 它显示除了几个未挂起并在毫秒内完成的正常查询外,没有运行任何查询
- "显示引擎INNODB状态"
- 它实际上显示了很多记录,如下所示
---TRANSACTION 2974372519, ACTIVE 31 sec
2 lock struct(s), heap size 1128, 0 row lock(s), undo log entries 4
问题:
- 可以使用什么命令或方法来理解此2974372519事务是什么,它试图做什么?
- 有什么方法可以了解我的40个占用的数据库池连接在做什么?
我们使用HikariCP:4.0.3和MySQL-Connector-Java:8.0.22.