使用VisualVM,我可以附加到本地java进程,启动/停止CPU分析并生成快照。我甚至不需要使用任何特殊代理等进行过程测试。如何在生产中生成cpu快照?
是否可以在无头生产服务器上执行相同的操作?我知道我可以配置该过程来远程连接调试器,但我想尽量减少更改客户环境的数量和影响。我只是想运行一段命令来配置文件一段时间,并生成一个快照文件,我可以使用VisualVM或同等工具将文件扫描到我的工作站进行分析。
最好,我运行的任何程序都应该可以自由重新分发,以便我可以将其与Java应用程序捆绑在一起,并让它在客户环境中可用。
理想情况下,就像使用VisualVM一样,我希望能够在不重启的情况下连接到正在运行的系统。
我发现到目前为止是插装与hprof最接近:
java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
但需要重新启动才能开始分析和另一个停下来,因为我没有看到一个办法把采样并在运行时关闭。
有没有更好的方法?如果没有开箱即用的解决方案,那么如何构建它?它必须是可能的,因为VisualVM做到了。
我不认为这回答了我的问题。我想知道如何在无头环境中捕捉CPU快照。 YourKit是否有命令行模式? – ykaganovich
我会回答,因为这个问题是关于YourKit分析器。是的,YouKit拥有控制分析的命令行工具http://www.yourkit.com/docs/java/help/command_line_tool.jsp您不需要YourKit GUI来启动/停止分析和捕获快照。而且您不需要GUI来将Java EE服务器与Profiler代理整合。有一个命令行Java EE集成向导http://www.yourkit.com/docs/java/help/profiling_j2ee_remote.jsp –