Java Visual VM是否会影响受监控JVM的性能?
我正在考虑用Java Visual VM评测一个生产环境。我想问你:Java Visual VM是否会影响受监控JVM的性能?,java,visualvm,Java,Visualvm,我正在考虑用Java Visual VM评测一个生产环境。我想问你: CPU使用率 气相色谱活性 旧堆 线程状态 这种监视对JVM的性能有任何重大影响吗?这完全取决于您对它所做的操作,性能影响的实际程度很难确定 如果您通过JVM的MXBeans监视某些GC,那么它的影响很小,如果您持续监视它,那么它的影响很大 如果您需要调查与CPU相关的问题,采样提供了一种识别瓶颈的简单机制,对性能的影响最小。根据我的经验,除非您使用探查器,否则不会出现明显的减速。在探查器模式下,性能影响是否显著取决于过滤
- CPU使用率
- 气相色谱活性
- 旧堆
- 线程状态
这种监视对JVM的性能有任何重大影响吗?这完全取决于您对它所做的操作,性能影响的实际程度很难确定 如果您通过JVM的MXBeans监视某些GC,那么它的影响很小,如果您持续监视它,那么它的影响很大
如果您需要调查与CPU相关的问题,采样提供了一种识别瓶颈的简单机制,对性能的影响最小。根据我的经验,除非您使用探查器,否则不会出现明显的减速。在探查器模式下,性能影响是否显著取决于过滤器。取样器是一个更安全的选择,但是您必须注意,启用两者都会触发一些热代码替换,这会导致系统在短时间内不可用(也可能触发以下情况:) 当然,如果您只是想获得基本信息(内存、cpu图、gc和线程数),那么影响会更小 我对我的答案有多确定?到目前为止,我已经使用JVisualVM、JProfiler和YourKit将近10年了。我们在客户的生产代码(一个常规web应用程序)中使用了yourkit中的采样/监控模式(其功能基本上与jvisualVM相同)来分析性能缺陷。它没有任何明显的影响
<>但是,如果只需要基本的系统监控,可能会有更合适的产品来考虑,比如java旋律()或KIEKER()。这取决于很多因素。如果只是访问MBean属性或调用操作,那么影响很小。但一旦启动CPU/内存采样器或探查器,它就会显著增加影响。有多重要?让我看看 抽样对性能的影响: 将VisualVM连接到一个简单的程序,该程序在启动时休眠(什么也不做)。因此,主线程处于休眠状态。我启动CPU采样器60秒。总CPU时间的60秒读数为5640ms(5.64秒)
这是当我连接使用本地机器没有任何加密。当您将使用SSL添加加密时(这是生产环境所必须的)。影响将进一步增加。很可能不会。但是你为什么不试试呢?这个问题太广泛了。在它目前的形式中,答案是“是的,它有”。我刚才澄清了这个问题。它是关于cpu、内存、gc和线程的简单监控。