【问题标题】:Java monitoring tool which will allow to see the stacktrace at "real time"Java 监控工具,可以“实时”查看堆栈跟踪
【发布时间】:2015-02-09 16:21:58
【问题描述】:

我的工作是用 Java 编写的非常大的 Web 项目。 当我单击某个按钮或执行其他操作时,我很难理解应用程序代码中调用了哪些方法(因为我是项目新手,而且应用程序真的很大)。所以我想知道是否有一个工具可以让你以给定的时间间隔(比如每 100 毫秒)获取一些线程的堆栈跟踪。 我知道 VisualVm 但它不允许这样做,我只能在某个时间点使线程哑(无法连续获取堆栈跟踪)。

有人可以推荐工具或任何技术来让我在运行时监控方法调用吗? 谢谢

【问题讨论】:

  • 我怀疑有没有办法做到这一点。 Profiler 会做类似的事情,但它旨在计算使用量,而不是产生堆栈跟踪。我认为您最好的选择是采用您需要的一个特定用例,并在调试器中对其进行跟踪。随着时间的推移,您将了解整个应用程序。

标签: java monitoring stack-trace visualvm thread-dump


【解决方案1】:

对于这种情况,我使用 Java Mission Control。全部功能适用于 Oracle JDK,因为 OpenJDK 并非一切都正常工作。 More info

来自网站:

从发布 Oracle JDK 7 Update 40 (7u40) 开始,Java Mission Control 与 HotSpot JVM 捆绑在一起。

您需要在 JVM 中添加以下参数才能使用它。注意:我通常还会添加调试选项。

JAVA_DEBUG="-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
JAVA_JMC="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=3614 -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"

然后您需要远程连接到端口 3614,您将能够看到 JVM 内部。在那里,您将能够分析 CPU、检查分配和死锁检测 + 选择线程并查看当前正在执行的内容。以及其他一些图表和有价值的信息。

【讨论】:

  • 非常感谢,我现在正在检查它,(我在 JDK 6 上(()我会在测试后接受你的答案,但无论如何谢谢))
  • 不客气,如果您有机会迁移到 JDK7 或 JDK8,您将获得性能提升。 JDK6 是 Oracle 接管 Sun 时的中间版本。 JDK8 带来了重大影响。
【解决方案2】:

您可以通过多种方式检查堆栈跟踪:

  • 使用 jconsole 的线程选项卡,您可以查看哪些线程处于活动状态以及它们处于什么状态。
  • 在开发模式下运行时,您可以使用 JvisualVm(安装 jdk 时需要付费)或使用任何分析器(如 jprofiler/yourkit 等)来查看堆栈跟踪。
  • 您可以通过在 unix 上运行 kill -3 pid 或在 Windows 上运行 control + break 每分钟获取一次堆栈跟踪信息
  • 您可以使用jstack 命令获取跟踪信息。
  • 您可以使用 IDE(eclipse/netbeans/Intellij 等)调试代码,并在每个方法调用之后跟踪方法调用。

【讨论】:

    【解决方案3】:

    存在许多用于 Java VM 监控和应用程序监控的工具。例如,参见eG Java Application Monitor

    ...eG Java Monitor 让您全面了解 JVM 中的活动:

    • 它可以让您查看 JVM 中正在运行哪些线程以及处于什么状态 它们处于(例如可运行、阻塞、等待、定时等待、 死锁或高 CPU)。
    • 您还可以访问堆栈跟踪 每个线程显示类、方法和代码行(用于排除故障 代码行级别的问题)。
    • 您可以监控 垃圾收集进程的性能、CPU 和内存使用情况,以及 JVM 重新启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多