【问题标题】:Java thread dump without jstack没有 jstack 的 Java 线程转储
【发布时间】:2018-12-08 06:48:06
【问题描述】:

我需要从命令行(ubuntu 服务器)监视 java 线程状态以与 Icinga 监视器一起使用。但是我不能使用 jps、jstack 和 jcmd 命令,因为它不允许在生产服务器中安装 JDK。

ps命令的process_id

# ps -ef| grep [s]tart.jar | cut -d' ' -f6
1201

但我正在努力收集 java 线程转储。我尝试过 kill -3 但无法获得任何输出。

还有其他的方法可以从命令行收集 java 线程状态吗?

【问题讨论】:

  • “但无法获得任何输出”为什么?没有输出?输出重定向到您无权访问的文件?
  • @talex,感谢您的提问。你的问题是关于输出位置的,我已经写在答案部分。谢谢

标签: java linux multithreading shell monitoring


【解决方案1】:

我找到了在执行kill -3 <pid> 时捕获线程转储的方法。 我在码头服务器的 JAVA_OPTIONS 中添加了以下选项,这有助于在指定位置记录线程转储。

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/jetty9/threaddump.log

现在执行kill -3 <pid>命令会在threaddump.log中记录线程转储,用于了解线程的状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2019-08-08
    • 2011-11-17
    • 2022-07-28
    相关资源
    最近更新 更多