如何分析远程运行的无头 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章