一、简述
在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来查看问题。