Java 1.6 JDK工具,VisualVM
有没有人使用新的Java 1.6 JDK工具VisualVM来分析生产应用程序,并且在对应用程序进行分析时其性能如何?
该文档说它是为生产和开发用途而设计的,但是基于以前的分析经验以及其他分析工具,我很犹豫。
解决方案
回答
尽管我个人还没有使用过VisualVM,但直到今天我才看到此博客文章,其中可能包含一些有用的信息。他谈到了使用该应用程序对生产应用程序进行性能分析。
回答
我在开发箱上尝试了一下,发现当我关闭性能分析时,它会意外关闭Tomcat。对于将其推广到生产环境,我会非常谨慎,我们是否可以在临时环境中模拟负载?它不如真实的东西好,但是如果出现问题,它可能不会让我们被解雇...
回答
可以使用VisualVM从另一台计算机远程连接到服务器。我们只需要右键单击"远程"节点,然后说"添加远程主机"。
这将至少消除VisualVM开销(如果有)在运行时不会影响性能。
这可能不会消除所有性能问题,尤其是在生产环境中,但会有所帮助。
回答
我以前使用过VisualVM来分析本地运行的内容。一个大的胜利就是我刚刚启动它,它可以连接到正在运行的JVM。它比我以前使用过的其他分析工具更容易使用,并且似乎没有那么多的开销。
我认为它可以抽样。 CPU密集型应用程序的开销似乎并不大。我没有测量任何东西(我对我的应用程序的性能感兴趣,而不是对工具的性能感兴趣),但是它绝对没有我习惯于从性能分析中看到的速度下降10的因素。
回答
我使用了Net Beans探查器,该探查器使用了与Visual VM相同的基础。
我正在使用Weblogic的较旧版本,这意味着使用1.5 JVM,因此无法进行动态添加。我正在分析的应用程序有数千个类,而当探查器对它们全部进行检测时,我的工作站几乎无法使用。仪器安装完成后,系统将变慢,但并非完全无法使用。减速的数量实际上取决于我们需要捕获的内容。基本的CPU指标是轻量级的。对内存分配进行性能分析会大大降低速度。
我不会在生产系统上使用它。除了减速的可能性外,我最终还用完了PermGen的空间,因为在更改设置时,探查器会重新插入并重新加载类。 (这可能在1.6代理中已修复,我不知道)
回答
仅监视应用程序,远程运行VisualVM不会降低它的速度。如果系统不在崩溃的边缘,我仍然看不到任何问题。基本上,它只是从JVM的内置粗粒度仪器中读取信息。但是,如果我们开始分析,则将遇到与其他探查器相同的问题。基本上是因为它们几乎都以相同的方式工作,通常使用JVM中的支持。
由于防火墙问题,许多人在远程运行VisualVM时遇到问题,但是我们甚至可以通过设置了某些系统属性的ssh远程运行Visual VM。