Java web应用性能分析之【java进程问题分析概叙】-CSDN博客
Java web应用性能分析之【java进程问题分析工具】-CSDN博客
前面整理了java进程问题分析和分析工具,现在可以详细看看jvisualvm的使用,一般java进程都是部署云服务器,或者托管IDC机房。手里有一台阿里云主机,刚好用来做实验。配置jvisualvm连接阿里云主机,分为两步。
- -Djava.rmi.server.hostname=39.99.211.248 阿里云主机这个公网ip一定要显示加上去
- -Dcom.sun.management.jmxremote 启用jmxremote
- -Dcom.sun.management.jmxremote.port=8899 jmx远程连接时使用的端口,设置成任意未被占用的端口即可
- -Dcom.sun.management.jmxremote.rmi.port=8899
- -Dcom.sun.management.jmxremote.authenticate=true 否需要身份认证,设置为false不需要用户名和密码
- -Dcom.sun.management.jmxremote.ssl=false 是否使用ssl,ssl是一个通信加密的安全协议,不启用
- -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password 登录密码
- -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access 登录账号
-
- 如果设置为true则需要额外配置以下2个参数
- Dcom.sun.management.jmxremote.access.file:access文件
- [root@phost ~]# vim /usr/local/soft/jmxremote.access //任意目录下创建access文件
- zhouxx readwrite //格式为: 用户名 (空格)权限
- Dcom.sun.management.jmxremote.access.file:密码文件
- [root@phost ~]# vim /usr/local/soft/jmxremote.password //创建密码文件
- zhouxx 123456 //格式为: 用户名 (空格) 密码
-
java进程的jvm参数配置示例:
- JAVA_OPTS=" -server -Dfile.encoding=UTF-8 -Djava.rmi.server.hostname=39.99.211.248 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8899 -Dcom.sun.management.jmxremote.rmi.port=8899 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access -Dapp.config=/home/web/demo/application.yaml -Xms64m -Xmx64m -Xmn64m -Xss1m -XX:MetaspaceSize=16m -XX:MaxMetaspaceSize=64m -XX:+UseConcMarkSweepGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintCommandLineFlags -Xloggc:log/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/"
- JAVA_OPTS=" -server -Dfile.encoding=UTF-8 -Djava.rmi.server.hostname=39.99.211.248 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8899 -Dcom.sun.management.jmxremote.rmi.port=8899 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/usr/local/soft/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/local/soft/jmxremote.access -Dapp.config=/home/web/demo/application.yaml -Xms64m -Xmx64m -Xss1m -XX:MetaspaceSize=16m -XX:MaxMetaspaceSize=64m -XX:+UseG1GC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintCommandLineFlags -Xloggc:log/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/"
-
-
-
- java $JAVA_OPTS -jar mydemo-1.0.0-SNAPSHOT.jar
为什么是全端口开发1-65535,而不是只开8899端口?
因为jmx不仅仅只启用8899端口,还会随机再起一个端口,如当前15641进程还开启了45919,这个端口不固定,所以只能针对117.147.118.199客户端全开放。
基本参数信息,相当于jps和jinfo
监控cpu、堆内存、元空间、类加载、线程等信息
线程信息:相当于jstack,也可以导出线程dump文件
抽样器:相当于jstack、jmap、jhat
快照信息
buffer pool监控
jconsole插件
visual GC:相当于jstat
提示 “不受此jvm支持”
参考:jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“_虚拟机 jvisualvm 不受此jvm-CSDN博客
Tracer:同样是cpu、堆、元空间、类加载、线程等的监控
jvisualvm通过分析dump文件,定位oom问题、cpu飙高问题、大内存对象问题等等