jconsole
JConsole工具是JDK自带的可视化监控工具。查看java应用程序的运行概况、监控堆信息、永久区使用 情况、类加载情况等。
命令行中输入:jconsole
jvisualvm
- 监控本地Java进程 可以监控本地的java进程的CPU,类,线程等。
- 监控远端Java进程
比如监控远端tomcat,演示部署在阿里云服务器上的tomcat
(1)在visualvm中选中“远程”,右击“添加”
(2)主机名上写服务器的ip地址,比如31.100.39.63,然后点击“确定”
(3)右击该主机“31.100.39.63”,添加“JMX”[也就是通过JMX技术具体监控远端服务器哪个Java进程]
(4)要想让服务器上的tomcat被连接,需要改一下 bin/catalina.sh 这个文件
(5)在 ../conf 文件中添加两个文件jmxremote.access和jmxremote.password
mxremote.access 文件内容:
guest readonly
manager readwrite
jmxremote.password 文件内容:
guest guest
manager manager
授权: chmod 600 *jmxremot*
(6)将连接服务器地址改为公网ip地址
hostname -i 查看输出情况 172.26.225.240 172.17.0.1
vim /etc/hosts
172.26.255.240 31.100.39.63
(7)设置上述端口对应的阿里云安全策略和防火墙策略
(8)启动tomcat,来到bin目录
./startup.sh
(9)查看tomcat启动日志以及端口监听
tail -f ../logs/catalina.out
lsof -i tcp:8080
(10)查看8998监听情况,可以发现多开了几个端口
lsof -i:8998 得到PID
netstat -antup | grep PID
(11)在刚才的JMX中输入8998端口,并且输入用户名和密码则登录成功
端口:8998 用户名:manager 密码:manager
Arthas
github地址:https://github.com/alibaba/arthas
文档:https://alibaba.github.io/arthas/
Arthas 是Alibaba开源的Java诊断工具,采用命令行交互模式,是排查jvm相关问题的利器。
![image](http://java-run-blog.oss-cn-zhangjiakou.aliyuncs.com/9389beed4ff44547bb550114549a7a25.png
)
常用命令
命令 | 说明 |
---|---|
version | 查看arthas版本号 |
help | 查看命名帮助信息 |
cls | 清空屏幕 |
session | 查看当前会话信息 |
quit | 退出arthas客户端 |
dashboard | 当前进程的实时数据面板 |
thread | 当前JVM的线程堆栈信息 |
jvm | 查看当前JVM的信息 |
sysprop | 查看JVM的系统属性 |
sc | 查看JVM已经加载的类信息 |
dump | dump已经加载类的byte code到特定目录 |
jad | 反编译指定已加载类的源码 |
monitor | 方法执行监控 |
watch | 方法执行数据观测 |
trace | 方法内部调用路径,并输出方法路径上的每个节点上耗时 |
stack | 输出当前方法被调用的调用路径 |
MAT
Java堆分析器,用于查找内存泄漏
Heap Dump,称为堆转储文件,是Java进程在某个时间内的快照
下载地址 :https://www.eclipse.org/mat/downloads.php
获取Dump文件:
- 手动:jmap -dump:format=b,file=heap.hprof 44808
- 自动:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
- 在线分析工具 gceasy.io