IDEA远程DeBug调试
项目启动方式
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=192.168.2.52:9605 debug_demo.war
Listening for transport dt_socket at address: 9605
IDEA添加远程DeBug
dump 线程栈分析
# 获取 Java 进程 id
jps -l
19768 /home/maintain/jenkins-bin/jenkins/jenkins.war
# dump 线程栈
jstack 19768 > jstack.txt
dump分析网站
https://fastthread.io/
jstat
jstat 是一个非常强大的 JVM 监控工具,一般用法是:jstat [-options] pid interval
它支持的查看项有:
- -class 查看类加载信息
- -compile 编译统计信息
- -gc 垃圾回收信息
- -gcXXX 各区域 GC 的详细信息 如 -gcold
使用它,对定位 JVM 的内存问题很有帮助。
通过jconsole.exe或jvisualvm.exe远程查看JVM
// 通过添加启动参数开启jmx
java -Djava.rmi.server.hostname=192.168.0.112 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9602 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.magement.jmxremote.ssl=false -jar -Xms3072m -Xmx3072m -Xmn1152m -Xss1024K -Dspring.profiles.active=prod bim-ht.war
参数说明
- -Djava.rmi.server.hostname 为java程序运行所在的机器ip
- -Dcom.sun.management.jmxremote.port 为端口,自定义,保证是未使用的端口即可。
- -Dcom.sun.magement.jmxremote.ssl=false 指定了JMX 是否启用SSL
- -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)(否则要输入linux登录的账号和密码)