Java 1.6 JDK工具,VisualVM

4
有没有人使用过新的Java 1.6 JDK工具VisualVM来分析生产应用程序,当进行分析时该应用程序的性能如何?
文档称它既适用于生产环境又适用于开发环境,但基于以往使用其他分析工具的经验,我有所犹豫。
8个回答

5

虽然我个人没有使用过VisualVM,但今天我看到了这篇博客文章,它可能对您有一些有用的信息。作者讲述了如何使用VisualVM对生产应用进行分析。


1

仅仅用于监测应用程序,远程运行VisualVM不会导致太大的减速。如果系统没有崩溃的边缘,我还没有看到任何问题。它基本上只是从JVM的粗粒度内置工具中读取信息。但是,如果您开始进行分析,就会遇到与其他分析器相同的问题。基本上,这是因为它们几乎都以相同的方式工作,经常使用JVM中的支持。

许多人由于防火墙问题而在远程运行VisualVM时遇到问题,但您甚至可以设置一些系统属性通过ssh远程运行Visual VM


博客文章已更新,提供了有关启动Jstatd的更多信息。 - hennings

1

我以前使用过VisualVM来对本地运行的程序进行分析。一个很大的优点是,我只需要启动它,就可以连接到正在运行的JVM。它比我以前使用过的其他分析工具更容易使用,而且似乎没有那么多的开销。

我认为它采用了抽样技术。在CPU密集型应用程序上的开销似乎不太显著。我没有测量任何东西(我只关心我的应用程序的性能,而不是工具的性能),但它绝对没有我从分析中看到的10倍减速因素。


1

我在开发环境中尝试了一下,发现当我关闭性能分析时,Tomcat会意外关闭。我建议非常谨慎地将其发布到生产环境,你能否在预发布环境中模拟负载呢?虽然不如真实环境好,但如果出错也不会让你丢掉工作...


0

我已经广泛使用了VVM(VavaVoom?),在轻模式下非常好用,即没有分析,只是从虚拟机中获取基本数据。但是一旦开始分析并且有许多类,那么就会出现相当大的减速。即使您拥有128核心板和2TB内存,我也不会在生产环境中进行分析,因为类的重新加载和重新定义很棘手,服务器类加载器是另一回事,而且从一个服务器实现到另一个服务器实现也有所不同,在生产中干扰它们不是一个很好的主意。


0

我自从VisualVM被包含在JDK之前就一直在使用它。它对系统的性能影响可以忽略不计。我从未注意到它会对系统的性能造成问题,但是我们的Java服务器当时有足够的余地来支持一些额外的负载。如果您的服务器运行在完全超负荷的水平,并且无法处理VisualVM的运行,则我会说更有可能需要购买另一台服务器。任何生产服务器都应该有一些内存余地,否则你所拥有的只是一个等待发生灾难的灾难。


0

我使用的是与 Visual VM 相同的基础设施的 Net Beans 分析器。

我使用旧版 Weblogic 工作,这意味着我必须使用 1.5 JVM,因此无法进行动态附加。我正在分析的应用程序有数千个类,当分析器对它们进行仪器化时,我的工作站几乎无法使用。一旦仪器化完成,系统会变得缓慢,但并非完全无法使用。减速程度取决于您需要捕获什么信息。基本的 CPU 指标非常轻量级,而分析内存分配会使事情变得非常缓慢。

我不会在生产系统上使用它。除了可能会减速之外,我最终会因为分析器重新仪器化和重新加载类而耗尽 PermGen 空间。(我不知道 1.6 代理程序是否已解决此问题)


0

可以使用VisualVM从不同的计算机远程连接到您的服务器。您只需要右键单击“远程”节点,然后选择“添加远程主机”。

这至少可以消除VisualVM开销(如果有的话)对性能的影响,同时运行。

这可能无法消除所有性能问题,特别是在生产环境中,但它会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接