配置挂起检测策略

缺省情况下,WebSphere® Application Server 的挂起检测选项处于打开状态。您可以配置符合应用程序和环境的挂起检测策略,来报告潜在的挂起,从而达到及早发现服务器故障的目的。检测到挂起线程时,WebSphere Application Server 将通知您,以使您能够对问题进行故障诊断。

开始之前

Java™ Platform, Enterprise Edition (Java EE) 应用程序中的一种常见错误是线程挂起。挂起线程可能由于简单软件缺陷(例如,无限循环)或更复杂的原因(例如,资源死锁)导致。当线程运行未绑定的代码路径时(例如,当代码在无限循环中运行时),系统资源(例如,CPU 时间)可能由此挂起事务消耗。另一方面,因为处于死锁状态,所以即使所有资源都空闲,系统也可能变得不应答。除非用户或监视工具报告该问题,否则系统可能无限期地保持此退化状态。

使用挂起检测策略,您可以指定对于完成工作单元来说过长的时间。线程监视器检查系统中的所有受管线程(例如,Web 容器线程和对象请求代理 (ORB) 线程)。非受管线程(由应用程序创建的线程)不受监视。有关更多信息,请阅读Java 平台企业修订版应用程序中的挂起线程

关于此任务

缺省情况下,启用了线程挂起检测选项。要调整挂起检测策略值,或者要完全禁用挂起检测:

过程

  1. 从管理控制台,单击服务器 > 应用程序服务器 > server_name
  2. 在“服务器基础结构”下,单击管理 > 定制属性
  3. 单击新建
  4. 添加以下属性:
    信息 描述
    Name com.ibm.websphere.threadmonitor.interval
    询问所选应用程序服务器中的受管线程的频率(以秒计)。
    缺省值 180 秒(3 分钟)
    信息 描述
    Name com.ibm.websphere.threadmonitor.threshold
    线程被认为挂起前可以活动的时间长度(以秒计)。检测到活动时间比此时间长度长的任何线程将被报告为挂起。
    缺省值 600 秒(10 分钟)
    信息 描述
    Name com.ibm.websphere.threadmonitor.false.alarm.threshold
    自动增加阈值前,失败警报可以发生的次数 (T)。可能是报告为挂起的线程最终完成了它的工作,从而导致失败警报。大量这些事件表明阈值太小。挂起检测工具可以自动响应这种情况:对于每个 T 失败警报,阈值 T 将乘以系数 1.5。将该值设置为零(或更小)以禁用自动调整。
    缺省值 100
    信息 描述
    Name com.ibm.websphere.threadmonitor.dump.java

    此属性将调用 dumpThreads 函数。设置为 true 将导致在检测到挂起的线程时执行 dumpThreads 函数并显示 WSVR0605W 消息。可以对 javacore 转储的线程部分进行分析,以便确定所报告的线程和其他相关线程正在执行的操作。

    如果设置为 1 到 Integer.MAX_VALUE 范围内的整数值,那么将导致在检测到挂起线程时执行 dumpThreads 函数并显示 WSVR0605W 消息。该整数值指示将执行 dumpThreads 函数的最大次数。
    注: 要关闭 WSVR0605W 消息,请设置 com.ibm.websphere.threadmonitor.interval=0

    [AIX Solaris HP-UX Linux Windows][IBM i]缺省情况下,dumpThreads 函数将创建 Javacore 转储。有关如何禁止创建此转储的信息,请参阅“使用脚本编制转储服务器进程中的线程”主题。有关此转储的内容和含义的更多信息,请参阅 Java 诊断指南。

    [z/OS]缺省情况下,dumpThreads 函数将创建 Javacore 转储、Heapdump 和 TDUMP。有关如何禁止创建这些转储的信息,请参阅“使用脚本编制转储服务器进程中的线程”主题。有关这些转储的内容和含义的更多信息,请参阅 Java 诊断指南。

    缺省值 false (0)
    信息 描述
    Name com.ibm.websphere.threadmonitor.dump.java.track

    此属性指定特定数目的时间间隔,在这些时间间隔内,如果线程保持挂起状态,那么监视器将调用 dumpThreads 函数。

    请设置为 2 到 com.ibm.websphere.threadmonitor.dump.java 的值这一范围内的整数值,这将导致在线程保持挂起状态的后续监视器时间间隔内执行 dumpThreads 函数。该整数值指示为了跟踪挂起的线程而执行 dumpThreads 函数的最大次数。例如,值 2 将导致线程监视器对挂起的线程至多执行两次 dumpThreads,并且在最初检测到线程处于挂起状态时执行一次。如果该线程在下一个线程监视器时间间隔内仍处于挂起状态,那么线程监视器可以再执行一次 dumpThreadsand。

    此属性只能与 com.ibm.websphere.threadmonitor.dump.java 属性一起使用。

    缺省值 (0) 个时间间隔
  5. 可选: 如果希望监控执行系统警报的线程的活动,请将以下 JVM 一般参数添加到服务器设置中。
    信息 描述
    Name -Dcom.ibm.websphere.alarmthreadmonitor.generate.javacore
    设置为任何值都会导致在检测到挂起的系统警报线程时创建 javacore 转储。可以对 javacore 转储的线程部分进行分析,以便确定所报告的线程和其他相关线程正在执行的操作。
    缺省值 取消设置
    信息 描述
    Name com.ibm.websphere.alarmthreadmonitor.checkinterval.millis
    询问系统警报线程的频率(以毫秒计)。将该值设置为零可禁用系统警报挂起线程检测。最大时间间隔为 600000(10 分钟)。
    缺省值 10000(10 秒)
    信息 描述
    Name -Dcom.ibm.websphere.alarmthreadmonitor.threshold.millis
    设置为 10000 和 600000(10 分钟)之间的任何整数值。 此参数用于设置在认为系统警报线程不响应之前,该系统警报线程可以处于活动状态的时间长度(以毫秒计)。 检测到不活动时间长于此时间长度的所有系统警报线程都将报告为挂起。
    缺省值 10000(10 秒)

    要将这些参数添加到服务器设置中,请完成以下操作:

    1. 在管理控制台服务器设置页面上的“服务器基础结构”下,单击 Java 和进程管理 > 进程定义
    2. [z/OS]选择控制
    3. 选择 Java 虚拟机
    4. 将参数添加到 JVM 一般参数部分。
  6. 单击应用
  7. 单击确定
  8. 保存更改。 在重新启动服务器前确保已执行文件同步。
  9. 重新启动应用程序服务器以使更改生效。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ttrb_confighangdet
文件名:ttrb_confighangdet.html