-
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 readwritejmxremote.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地址:github.com/alibaba/art… 文档:alibaba.github.io/arthas/
Arthas 是Alibaba开源的Java诊断工具,采用命令行交互模式,是排查jvm相关问题的利器。
常用命令
| 命令 | 说明 |
|---|---|
| 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进程在某个时间内的快照
下载地址 :www.eclipse.org/mat/downloa…
获取Dump文件:
-
手动:jmap -dump:format=b,file=heap.hprof 44808
-
自动:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
-
-
在线分析工具 gceasy.io