我们有一个与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.

推荐答案

事务存储在INFORMATION_SCHEMA.INNODB_TRX中.要找到该语句,只需执行

SELECT trx_query FROM INFORMATION_SCHEMA.INNODB_TRX WHERE trx_id=2974372519;

另请参阅:INFORMATION_SCHEMA.INNODB_TRX table

Java相关问答推荐

为什么Java中的两个日期有差异?

使用包私有构造函数强制子类Java类

方法没有用正确的值填充数组—而是将数组保留为null,'

RxJava PublishSubject缓冲区元素超时

取消按钮,但没有任何操作方法引发和异常

解析Javadoc时链接的全限定类名

如何获得执行人?

MySQL数据库中未应用具有Spring数据的唯一约束

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

IntelliJ IDEA依赖项工具窗口丢失

如何使这两种方法合二为一?

Java在操作多个属性和锁定锁对象时使用同步和易失性

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

如何在SWT菜单项文本中保留@字符

基于距离的APACHE POI公式判断

org.springframework.web.HttpRequestMethodNotSupportedException:请求方法';帖子';不支持

Java泛型方法重载

获取月份';s在java中非UTC时区的开始时间和结束时间

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了

URI构造函数错误?