【问题标题】:How can I troubleshoot a thread in hang in WebSphere Application Server?如何对 WebSphere Application Server 中挂起的线程进行故障排除?
【发布时间】:2017-06-21 11:57:29
【问题描述】:

我看到 websphere 应用程序服务器中存在挂起的线程。如何解决此问题?我应该向应用程序开发人员发送哪些文档? 谢谢。

【问题讨论】:

  • 当线程运行超过指定时间限制时,WebSphere 会提供有关挂起线程的警告。这可能是真的,也可能不是真的,有时你有一个线程执行大量工作并且超过了设定的时间限制。日志输出可能会提供一些关于该特定内容的信息。挂线有没有其他症状?

标签: websphere workload-scheduler


【解决方案1】:

最重要的是线程堆栈 - 它应该显示指示挂起线程的消息,它会告诉您该线程正在做什么。

这本身可能还不够,特别是如果该线程正在等待其他线程。在这种情况下,您可能需要线程转储。这可以通过针对非 Windows 系统上的进程 ID 的“kill -3”触发(我必须做更多的研究来告诉你 Windows 上的等效进程,尽管有工具可以模拟“kill -3”) ,并且服务器也可以配置为在检测到挂起线程时执行此操作,使用 JVM 系统属性 com.ibm.websphere.threadmonitor.dump.java(设置为“true”或表示最大数量的整数值你想要的线程转储)。

线程转储将转到一个名为“javacore...txt”的文件(“...”将是一个表示时间戳之类的长字符串),但在 Solaris 上除外,它将转到服务器的 native_stdout 。日志。 javacore 不仅仅是线程堆栈,因此您可以搜索“线程详细信息”以快速找到该部分。您需要从服务器日志中搜索线程名称/堆栈,以确定哪个线程是挂起的线程,然后从那里开始。

【讨论】:

    【解决方案2】:

    如果您在使用 WebSphere Application Server 时遇到性能、挂起或高 CPU 问题,IBM 支持团队记录了一个过程来收集诊断和解决此类问题所需的数据。这个过程基本上是基于

    • 启用应用程序服务器 verboseGC
    • 在出现问题时运行一个脚本,该脚本为有问题的 JVM 收集 3 个 javacore

    在此过程结束时,您需要收集:

    • 脚本生成的*.tar.gz文件
    • 脚本生成的javacores
    • 服务器日志(SystemOut.log、native_stderr.log、...)

    并将结果发送给 IBM 支持。

    要获取脚本和有关此过程的更多信息,我建议查看以下文章:

    AIX 平台也存在类似的文档。

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2010-10-13
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多