JConsole(Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具。管理的是什么?管理的是监控信息、永久代的使用信息、类加载等等html
若是咱们想监控本机的某一个java程序的运行,那么直接输入jconsole(windows下能够弹出图形化界面,linux 下没法弹出图形化界面)便可,java
能够看到本机的java 进程,linux
点击其中一个就能够进入图形化界面,而后对其进行监控查看堆信息,以及进行死锁检测。windows
监控eureka 线程,里面有一栏是线程,下有检测死锁的功能,未检测到死锁,说明不存在死锁:tomcat
点击未检测到死锁,工具
而后监控查看deadlock进程,点击检测死锁,发现了三个死锁的线程,点击线程能够查看阻塞的地方,不一样版本JDK这里可能有所差别,网上的部分资料说这里会有红色的提示,:线程
监控界面上还有执行GC的功能,点击GC后发现内存确实堆内存占用有所降低:3d
上面讲了如何监控本机的JAVA线程,若是想监控远程tomcat的的进程呢server
须要在catalina.sh 中添加以下配置:htm
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.54.5" ## 配置远程的主机
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8888" ## 配置远程jMX端口
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=8888" ## 配置远程jMX端口
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticat=true" ## ## 配置远程jMX 是否须要认证
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" ## 配置远程jMX是否须要ssl
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticat=true" 因环境不一样而有所差别,我本机必须配置为true,false 访问不了
既然开启了远程的认证,必然存在认证的用户名和密码问题,密码配置参考博客:http://www.javashuo.com/article/p-vkfagayw-bg.html
连接远程的tomcat:
远程tomcat的catalina.sh 配置以下: