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

2024-01-26T05:47:56.png
2024-01-26T05:48:14.png
2024-01-26T05:48:34.png

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登录的账号和密码)
最后修改:2024 年 01 月 26 日
如果觉得我的文章对你有用,请随意赞赏