如何分析远程运行的无头 Java 应用程序?

Posted

技术标签:

【中文标题】如何分析远程运行的无头 Java 应用程序?【英文标题】:How to profile a headless Java application, running remotely? 【发布时间】:2012-11-01 11:44:19 【问题描述】:

我有一个无头 Java 应用程序,作为守护进程式进程在远程服务器上运行。

我想从JVisualVM 显示的进程中提取Java 级别的分析信息。例如,它应该显示方法调用次数等等。

这样做的最佳方法是什么?我的理解是 JVisualVM 在远程连接时不会配置文件。

理想情况下,分析信息将存储在文件中以供以后检查,其方式类似于 Java 堆生成(使用 jmap)和稍后分析(使用堆检查器)。

【问题讨论】:

你可以用商业分析器做到这一点,但我不知道如何用 VisualVM 做到这一点。 如果这是最普遍的最新事实,那么可能值得将其推广为答案。 如果没有人知道方法,我会的。也许 Java 的安全模型允许您在同一台机器上注入代码,但不能从另一台机器上注入代码?? 是unix服务器吗?您始终可以通过 X 远程运行 JVisualVM 是的,它是...好点,我确实想到了,但忘记了。我仍然想知道任何不需要连接并登录到文件的方法。可能值得将其推广为答案。 【参考方案1】:

您可以使用NetBeans profiler 远程分析功能。

远程分析

分析在与您的 NetBeans IDE 不同的系统上运行的应用程序。分析器的远程包可以安装在远程系统上,允许您分析在该系统上启动的应用程序。

其实VisualVM is based on it。

除了各种监控功能外,该工具还包含一个基于 NetBeans 分析器的内置分析器。虽然 VisualVM 中的分析器 UI 看起来很简单(尤其是与 NetBeans 分析器相比),但分析功能几乎与 NetBeans 中的一样强大。

这里有一篇关于Profiling a Java remote server using Netbeans的详细博文。

【讨论】:

这确实回答了这个问题。我想最初我是在寻找可以录制的东西,但实际上并不想连接到这个过程,但没有明确说明这一点。但这回答了所提出的问题,所以有一些观点;)【参考方案2】:

根据链接,您必须设置 jstatd 和 jmx: http://javadevsoup.blogspot.de/2012/02/remote-java-profiling-using-visual-vm.html

【讨论】:

【参考方案3】:

我刚刚发现了另一个我认为可以做到这一点的产品:http://chrononsystems.com/products/chronon-recording-server

【讨论】:

以上是关于如何分析远程运行的无头 Java 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 7 上关闭无头图形环境

黑莓 10 级联。如何让长时间运行的无头应用程序自行终止?

如何让无头浏览器模仿成熟的浏览器来使用 selenium 运行 Web 应用程序?

无法使用 TPTP 分析远程 Java 应用程序

如何在远程 Java Web 应用程序上进行内存分析

如何通过ADB为无头仿真器启用USB调试