使用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 Files\Java\jdk1.7.0_45\bin);
(2)在远程上右键,添加远程主机;

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

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


图中红色的表示出现了死锁的情况,可以通过导出dump来查看问题。
使用jvisualvm.exe工具远程监视tomcat的线程运行状态的更多相关文章
- java heap space以及jvisualvm.exe 工具
最近遇到了java heap space错误. 这个问题的原因,其实还是堆溢出了. 解决这个问题 1 首先我们考虑,在代码中哪里使用了较多的对象,但是又没有及时回收. 2 我们可以通过 jvisua ...
- 使用JMX工具远程监控tomcat配置
使用JMX工具远程监控tomcat,在tomcat启动时添加配置参数: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.po ...
- Java虚拟机二:使用jvisualvm工具远程监控tomcat内存
jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...
- 使用jvisualvm.exe工具查看java项目内存溢出(堆溢出)
在查看内存溢出的时候,我们需要明白,堆溢出和持久代溢出,他们不一样,说到内存泄漏,我们就需要明白,内存中 年老代和新生代,和持久代,这3块的数据 自己的理解: new了一个对象,会进入到堆里面,先放 ...
- 【监控】jvisualvm之jmx远程连接 tomcat war启动应用
一.tomcat相应jmx配置 1.在tomcat bin目录下的catalina.sh文件中添加如下配置: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun. ...
- jvisualvm远程监控Tomcat
网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结. 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. ...
- jconsole & jvisualvm远程监视websphere服务器JVM的配置案
jconsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请.释放等动作,将内存管理的所有信息进行统计.分析.可视化.我们可以根据这些信息判断程序是否有内存泄漏问题. 使用jco ...
- JConsole & JVisualVM远程监视Websphere服务器JVM的配置方法
原文链接:http://xjsunjie.blog.51cto.com/999372/1331880/ jconsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请.释放等动作, ...
- jvisualvm远程监控服务器tomcat
1.在 {服务器tomcat路径}/bin/catalina.sh 中,的[# OS specific support. $var _must_ be set to either true or f ...
随机推荐
- jQuery入门——实现列表的显示隐藏与实现轮播图
列表的显示与隐藏 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...
- Fish and Oh My Fish in Ubuntu
After install Fish shell, then install Oh My Fish . Oh My Fish(shortly OMF) can make our Fish shell ...
- CSS3 - vue中纯css实现柱状图表效果
背景 以前我们制作柱状图都用echarts或者其他同类型的图表插件 这次是个移动端的需求,而且这个图表需要动画 使用echarts就会显得过重,而且动画达不到我想要的效果(主要是我自己愚蠢想不到好的动 ...
- WebSocket API 学习笔记
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 W ...
- HDU 5510:Bazinga(暴力KMP)
http://acm.hdu.edu.cn/showproblem.php?pid=5510 Bazinga Problem Description Ladies and gentlemen, p ...
- python异步IO编程(一)
python异步IO编程(一) 基础概念 协程:python generator与coroutine 异步IO (async IO):一种由多种语言实现的与语言无关的范例(或模型). asyncio ...
- C#中的委托和事件(上篇)
每一个初学C#的程序猿,在刚刚碰到委托和事件的概念时,估计都是望而却步,茫然摸不到头脑的.百度一搜,关于概念介绍的文章大把大把的,当然也不乏深入浅出的好文章.可看完这些文章,大多数新手,估计也只是信心 ...
- intel FPGA CLKn pin 是否能直接进PLL?
原创 by DeeZeng FPGA的时钟需要从专用的时钟管脚输入,那CLKn 作为Single-End时钟pin时是否能直接进 PLL呢? 通过查看对应FPGA型号的手册,得出以下结论 1. Cyc ...
- golang开发:类库篇(三)命令行工具cli的使用
为什么要使用命令行 觉得这个问题不应该列出来,又觉得如果初次进行WEB开发的话,可能会觉得所有的东西都可以使用API去做,会觉得命令行没有必要. 其实,一个生产的项目命令行是绕不过去的.比如运营需要导 ...
- 让Redis突破内存大小的限制
Redis虽然可以实现持久化存储,也是基于数据内存模型的基础之上,单机内存大小限制着Redis存储的数据量,有没有一种替代方案呢?本文介绍一款笔者使用的采用New BSD License 许可协议的软 ...