java - 如何监控多线程 EJB2 JBoss 应用程序中的数据库事务?

标签 java oracle jboss database-deadlocks

我在我的应用程序中遇到了可重现的 Oracle 死锁。对代码的初步调查没有发现任何明显的原因,所以我想在记录正在运行的 SQL 以及最重要的是它们正在发生的事务时重新创建这种情况。

我开始添加我自己的调试语句,但这似乎是我在重新发明轮子并且已经证明容易出错(我最初错过了我的一个 EJB 方法被定义为“RequiresNew”)

是否有工具可以做到这一点?我看过:

  • log4jdbc,但从我看到的文档中不清楚 将记录单独的事务,而且它不支持 数据源,所以我需要解决这个问题。

  • jdbcslog - 也不清楚它是否会记录事务

还是我错过了一些更明显的方法来做到这一点?

最佳答案

解决了几次类似的情况。仅从您的 session 日志记录中很难(我称之为幸运)在复杂的应用程序中找到解决方案。 (Oracle 杀死其中一个 session 。一个被杀死,另一个快乐地活着)

最好的解决方案是询问您的 DBA(或者如果您有权访问您的 oracle 安装,您可以谷歌然后自己获取它们,这并不复杂)以获取跟踪文件(该文件在终止 session 的异常(exception)情况下被提及,所以搜索您的警报日志),将会出现死锁图。 (只是死锁的全文跟踪文件)

只需在此处查看有关如何查看跟踪文件的确切信息。 LINK

关于java - 如何监控多线程 EJB2 JBoss 应用程序中的数据库事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12638966/

相关文章:

java - 从 JBoss 到 Tomcat 的 JMXProxy

JavaFx 在文本区域组件上绘制线条

java - 在数组中搜索值但仅打印第一个实例[更新]

java - JBoss 使用 java 代码使用的内存

sql - 范围内的随机数 - sql oracle

database - Oracle 中表行的创建日期时间是多少?

grails - 将简单的grails(1.3.7)WAR文件部署到JBoss 7.0.1

java - 使 Java 字符串可用于 SQL 脚本

java - 使用 Gradle 更改源文件时运行单元测试的子集

sql - Oracle ALTER 语句中可以使用子查询吗?