gpt4 book ai didi

java - 有没有办法在 Oracle 异常上触发 jvm 线程转储?

转载 作者:行者123 更新时间:2023-12-02 05:19:23 26 4
gpt4 key购买 nike

我们有一个在 Websphere 中运行的 Java 程序,并使用直接使用 jdbc 的 Oracle 数据库(无 Hibernate 或 JPA)。我们的客户正在使用 HP Performance Center 进行负载测试,他在负载下偶尔会遇到 Oracle“死锁”异常

Caused by: java.sql.SQLException: ORA-00060: deadlock detected while waiting for resource

有没有一种方法可以在代码中或外部强制进行与发生此异常时kill -3 jvm 相同类型的线程转储?

最佳答案

如果无法自动检测异常发生的时间,那么了解如何枚举线程就没有多大用处。

我们一直这样做。我们基本上使用:

Thread.setDefaultUncaughtExceptionHandler

当我们的应用程序启动时,然后我们在发生异常时转储我们想要的信息:

  • Map<Thread, StackTraceElement[]> mst = Thread.getAllStackTraces();

  • Runtime.getRuntime().freeMemory()/maxMemory()/totalMemory()获取基本内存信息

  • 用户使用模式(如果是用户可以与之交互的应用)

  • 自制“分析”

  • 等等

然后你可以调用很多其他的东西并变得更有趣。例如,我们会自动将崩溃报告(包括完整的堆栈跟踪)发送到等待此类跟踪的服务器。

关于java - 有没有办法在 Oracle 异常上触发 jvm 线程转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com