jconsole远程监控

java -Djava.rmi.server.hostname=192.168.5.132 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=11111 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xms100M -Xmx100M -XX:+PrintGC FullGCTest

JVM随笔_垃圾回收

192.168.5.132:11111

JVM随笔_远程连接_02

JVM随笔_垃圾回收_03

jvisualvm远程连接

参考资料链接:https://www.cnblogs.com/liugh/p/7620336.html

在$JAVA_HOME/bin/下新建策略文件:

touch jstatd.all.policy

vi jstatd.all.policy

输入如下内容:

grant codebase “file:/usr/local/soft/jdk1.8.0_181/lib/tools.jar” {

permission java.security.AllPermission;

};

启动jstatd:

./jstatd -J-Djava.security.policy=./jstatd.all.policy

JVM随笔_远程连接_04

JVM随笔_远程连接_05

192.168.5.132:11111

java -Xms100M -Xmx100M -XX:+PrintGC FullGCTest

JVM随笔_java_06

top

JVM随笔_java_07

top -Hp 6906

JVM随笔_java_08

JVM随笔_垃圾回收_09

JVM随笔_远程连接_10

JVM随笔_java_11

死锁用 jstack

jstack 6906

JVM随笔_远程连接_12

2. 系统CPU经常100%,如何调优?

CPU100%那么一定有线程在占用系统资源,


  1. 找出哪个进程cpu高(top)
  2. 该进程中的哪个线程cpu高(top -Hp)
  3. 导出该线程的堆栈 (jstack)
  4. 查找哪个方法(栈帧)消耗时间 (jstack)
  5. 工作线程占比高 | 垃圾回收线程占比高

3. 系统内存飙高,如何查找问题?


  1. 导出堆内存 (jmap)
  2. 分析 (jhat jvisualvm mat jprofiler … )