使用jvisualvm.exe工具远程监视tomcat的线程运行状态

一、简述

     在web项目中,常使用tomcat作为web容器。代码编写的时候,由于业务需要,也常会使用线程机制。在系统运行一段时间之后,若出现响应慢或线程之间出现死锁的情况,要查出问题所在,需要使用jdk 提供的 jvuisualvm 工具,通过该工具监视tomcat的线程运行情况,从而解决问题。

    tomcat分为linux和windows版的,不同的版本若想使用jvuisualvm进行线程监视,需要进行不同的配置。

二、linux版本的tomcat配置

    为了让本机器上的jvuisualvm 工具能够监视远程机器上(linux)的tomcat中线程运行状况,tomcat需要修改其对应配置。修改如下:

(1) 修改catalina.sh文件

   打开该文件,在绿色注释上加入以下配置。

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.2.145.108"
# ----- Execute The Requested Command -----------------------------------------

其中红色所指IP是tomcat所属服务器的IP。蓝色所指端口为jmx连接时的端口。

(2) linux防火墙配置

在(1) 中指定了jmx连接的端口,此时需要查看linux是否开启,若开启,可以将防火墙关闭,或者将端口设置到防火墙中允许通过。

三、windows版本的tomcat配置

    windows版本的tomcat,需要查看其启动方式,若是注册成了服务,可以通过以下方式进行配置:

(1) 更改注册表:

  

在注册表中找到图中位置。

    双击 Options 在其中添加

-Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=XXXX.XXXX.XXXX(双网卡的需要指明,单网卡的可以不指定)
-Dcom.sun.management.jmxremote.port=1090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

   之后再重启tomcat服务即可。

若重启不成功,请检查添加的这几行是不是后面有空格。(若有多余的空格是启动不了的)

四、jvuisualvm调试

(1) windows下打开java安装目录bin目录下的jvisualvm.exe(C:Program FilesJavajdk1.7.0_45in);

(2)在远程上右键,添加远程主机;

 

(3)、在添加的远程主机上右键,添加Jmx(此处不需要密码,点击确定即可);

 

(4)、双击连接查看Jvm运行情况

 

 

 

 

图中红色的表示出现了死锁的情况,可以通过导出dump来查看问题。

原文地址:https://www.cnblogs.com/sandyflower/p/9480941.html