标签: visualvm

如何使用JMXWS WS Connector(JSR-262)启动VisualVM?

我有一个在JBoss中运行的Java应用程序,我在其中启用了JMX远程监控.这允许我连接jconsole和visualvm等工具来监视内存使用情况,cpu利用率,mbeans等.运行我的应用程序的服务器具有限制性端口访问权限,这就是我使用JSR-262 JMX WS Connector的原因.

JSR-262实现有一个如何为jconsole启用jmx:ws协议的示例.但我想尝试使用visualvm.

我认为我必须做的是,在启动visualvm时:

  1. 在类路径中添加一些额外的JSR-262 jar
  2. 将java.endorsed.dirs设置为非捆绑JAXWS库所在的路径

有人能指出我正确的方向吗?有没有一种机制可以为visualvm提供额外的参数?它会起作用吗?还有更简单的方法吗?

java web-services jmx visualvm

6
推荐指数
1
解决办法
5374
查看次数

衡量Java程序内存使用情况的最佳方法?

我目前正在使用VisualVM,但我遇到的问题是我无法保存它生成的图形.我需要报告一些有关其内存使用情况和运行时间的数据,但运行时间很容易System.nanoTime().我也尝试过NetBeans探查器,但它不是我想要的,因为我不是在寻找那些会减慢速度的特定部件,所以这样就太过分了.最大的问题是它占用了太多的处理时间.另外,我不能像VisualVM一样轻松捕获/传输数据,至少就我所知.

理想情况下,最好的方法是调用一些方法,因为我可以更容易地获取信息,但是像VisualVM这样的任何实际上让我保存图形的东西都可以.与NetBeans分析器相比,VisualVM的性能也相当不错,但我认为这是因为我没有使用它的分析器.

我目前正在使用Ubuntu,但Windows 7很好.我宁愿有一个专门做这个的程序,因为那些没有的程序得到的信息很可能包含JVM和其他更好的东西.

好吧,显然,您可以保存当前会话的快照并最大化VisualVM中的窗口,这样您就可以使图表更大,拍摄快照并剪切它们......但这是一种黑客行为.更好的建议欢迎.

java profiler visualvm measurement memory-consumption

6
推荐指数
2
解决办法
1万
查看次数

VisualVM通过防火墙 - RMI故障排除

很抱歉这个问题必须经过多次询问,但我无法成功解决问题.我已经阅读了很多博客,网站,论坛......并且在我的案例中找不到任何解决方案.

案例: 我需要将我的盒子上的VisualVM连接到远程服务器(tomcats,weblogics)以进行性能/线程/内存监控.这些服务器安装在受防火墙保护的(物理或虚拟)计算机上.防火墙中可以使用大间隔的端口,但可以使用,但不是所有端口.

测试

  • 我尝试在VisualVM中通过JMX直接连接,在服务器启动时使用服务器端的以下JVM选项:
    -Djava.rmi.server.hostname=[hostname]
    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=[port]
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false
    

我已经预先设置了主机名,因为从我的网络中,主机名和服务器的IP地址与远程服务器网络中的主机名和IP地址不同.

没有成功,VisualVM似乎总是在寻找未知的服务器.

  • 尝试在服务器端从可访问的端口(-p选项)启动jstatd从我的盒子(此端口上的telnet工作),但是当使用jstatd端口在此主机上启动visualVM时,它似乎仍在等待无法访问的东西...... .Jps连接到此远程主机的行为相同.

  • 尝试在网络保护较少的服务器上使用相同的工具,并且它可以工作.所以我看到了我的盒子和服务器之间的连接,它们是在不同于我指定的jstatd的端口上完成的.据我所知,第一次通信需要这个端口(握手类型),真正的通信是在其他端口上完成的,但不可预测(例如:60305,55197,...).我不确定我很清楚RMI是如何工作的.

拜托,帮助我,我疯了!

java jmx rmi visualvm

6
推荐指数
1
解决办法
7292
查看次数

如何使用jvisualvm监控Tomcat,显示visualgc?

我仔细检查过以下内容:

  • 我在Tomcat运行的同一个盒子上运行jvisualvm.
  • 这是Java 6u19.
  • 我的Tomcat服务作为我登录的用户运行.
  • 我的Tomcat服务正在使用与我使用的jvisualvm完全相同的JVM目录.
  • Tomcat在特定端口上启用了JMX,但我认为这不会对我有所帮助.

有了这一切,我确实在jvisualvm的"Local"列表中看到了我的Tomcat进程.它显示为"<未知应用程序>(pid 5644)".如果我双击它,则每个选项卡都显示"此JVM不支持".但是,VisualVM显示在"Local"中,并且所有选项卡都适用于它,显然使用相同的JVM实例.没有明显的方法可以将JMX连接添加到"<Unknown Application>"实例.

我确实在"Local"中看到Tomcat的JMX实例为"localhost :(我的端口号)",这样可行,但Visual GC选项卡显示"此JVM不支持",我认为这意味着Visual GC不会通过JMX工作.

我究竟做错了什么?我试过启动jstatd.它没有任何区别.当我启动jstatd时,visualvm会看到"Local""jstatd",但是当我双击它时,它似乎只是监视jstatd进程而不是任何其他Java进程.

注意:我决定尝试运行Tomcat而不是作为服务,而是直接在CMD窗口中运行,而中提琴,现在visualvm完美运行.当我运行"jps"并得到投诉"进程信息不可用"时,我想我会尝试这一点,并用Google搜索并发现有人说他们在运行任何Java应用程序作为服务时都得到了这个.这有助于测试平台,但无助于弄清楚如何监控生产系统.

这是在Windows Server 2003上的Tanuki包装器下作为Windows服务运行的Tomcat.

java monitoring tomcat visualvm

6
推荐指数
1
解决办法
3991
查看次数

visualvm历史图表

是否有可能在visual vm中设置内存,进程/ gc活动等图表在不降低x比例的情况下及时移动?当应用程序启动时,图形看起来不错,但是经过一段时间后,它们沿着x轴进行了严格的压缩,看到应用程序中实际发生了什么变得很麻烦.

java visualvm jvisualvm

6
推荐指数
1
解决办法
7585
查看次数

通过VisualVM分析Play框架应用程序(2.0.2)

关于我的Play,我遇到了一些严重的问题!应用性能.我已经尝试更改服务器和数据库,但速度仍然存在.

使用Firebug来测量我的http请求,我发现他们花了大约20秒才开始回复.

所以我最后的希望是使用VisualVM来分析我的应用程序并找到它的瓶颈.但我不知道传递一些参数如"-Dcom.sun.management.jmxremote"的正确方法,而不会弄乱全局JAVA_OPTS变量.

再次感谢!

profiling visualvm playframework-2.0

6
推荐指数
1
解决办法
4526
查看次数

分析堆dum,Map#size()不是函数吗?

得到这个奇怪的错误:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: size is not a function, it is null. (#1)

在分析堆转储并在VisualVM上运行此OQL查询时:

select { map: x } 
from java.util.concurrent.ConcurrentHashMap x 
where x.size() < 10
Run Code Online (Sandbox Code Playgroud)

问题在于该where条款,不管怎么说它没有用,虽然Map显然有一个大小方法.

java heap visualvm oql

6
推荐指数
1
解决办法
725
查看次数

如何通过JMX监控spring-boot应用程序?

我正在尝试为一个命令行应用程序构建设置JMX监视spring-boot.

根据https://github.com/spring-projects/spring-boot/tree/master/spring-boot-actuator我只需添加依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

现在我启动我的应用程序,打开VisualVM,我已经看到了我的应用程序PID.但是,我现在如何访问页面/health上提到的等等指标actuator?由于这是一个命令行应用程序,我没有任何可以执行的HTTP路径.

如何通过JXM查看这些指标?

java spring jmx visualvm spring-boot

6
推荐指数
1
解决办法
8362
查看次数

为什么tomcat在空闲期间使用越来越多的堆空间?

我使用startup.bat启动tomcat,并且不再使用它.据我所知,这是一个普通的香草装置(版本7.0.47).当使用像VisualVM这样的JMX工具连接时,我看到堆空间的使用不断增加.直到一些垃圾收集发生.然后它再次从头开始.

为什么会这样?tomcat在那做什么?

我的理解是否正确,它会不断产生新的物体?

在此输入图像描述

正如@Thilo所建议的那样,我拍摄了堆直方图的快照.它似乎主要创建对象阵列,字符和字节.下图显示了相隔3分钟拍摄的两张快照之间的差异.

在此输入图像描述

正如"每线程分配"视图所示,它与RMI有关,因为这里可以看到最大的增长.

在此输入图像描述

java heap performance tomcat visualvm

6
推荐指数
1
解决办法
835
查看次数

JavaFX应用程序的VisualVM概要分析

我正在尝试使用VisualVM(Java 8)对JavaFX 8应用程序进行CPU配置.虽然CPU采样工作正常,但在启动CPU分析时,应用程序只会挂起并且VisualVM报告为"分析正在运行(0种方法已检测)"状态.

我试图限制分析到我的应用程序的类,但无济于事.我错过了什么吗?

profiling javafx visualvm javafx-8

6
推荐指数
1
解决办法
1490
查看次数