如何配置 WebSphere 以在挂起线程数高于 N 时生成 javacore?

How to configure WebSphere to generate javacore whenever the amount of hang threads is higher than N?

我想将 WebSphere 配置为在手线程数高于 40 时生成 javacore。

我看过这个指南: http://www-01.ibm.com/support/docview.wss?uid=swg21448581

但它会生成大量 "false" 核心转储,因为我们有一些线程应该 运行 超过 10 分钟。

感谢您的帮助!

您有 2 个选择:

  1. 增加默认超时
    如果仅扩展就足够了,当线程被认为从 10 分钟挂起到例如 20 分钟时,则只需定义以下 JVM 自定义 属性:

    com.ibm.websphere.threadmonitor.threshold=1200
    

有关详细信息,请查看 Configuring the hang detection policy

  1. 定义自定义健康策略
    如果您 运行 WebSphere 8.5 Network Deployment,那么您可以配置健康策略来实现您想要的。转到 Operational policies > Health Policies 并使用以下自定义条件创建新策略:

    PMIMetric_FromServerStart$threadPoolModule$concurrentlyHungThreads > 40L
    

然后向其添加 Take threads dump 操作并将其分配给您的服务器。

有关可用条件的更多详细信息,请查看 Custom health conditions and Health management