启动参数配置:
nohup java -jar -Djava.rmi.server.hostname=10.13.138.2 -Dcom.sun.management.jmxremote.hostname=10.13.138.2 -Dcom.sun.management.jmxremote.port=65530 -Dcom.sun.management.jmxremote.rmi.port=65530 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false Apphome/{App_home}/Apphome/{App_name}.jar >> Apphome/log/{App_home}/log/Apphome/log/{App_name}.log 2>&1 &
无法展示机器上的GC信息
问题描述:VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。
下面介绍如何配置jstatd连接方式,实现使用visualgc插件查看远程服务器上java程序的gc情况:
1.修改远程服务器上java设置(root权限操作)
vi $JAVA_HOME/jre/lib/security/java.policy
在文件末位的 }; 前添加
permission java.security.AllPermission;
2.cd $JAVA_HOME/bin
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=10.13.138.2 -p 2030(远程服务器IP,端口号不写,默认1099)
3.本地启动VisualVM,因为在配置JMX时已经添加过服务器节点,如果配置正确,通常VisualVM会自动检测到jstatd连接并添加节点
此时VisualVM显示各个JVM进程的详细信息,并可以查看Visual GC信息,如下图:
查看Java进程,查看监听的端口号
lsof -i|grep java|grep PID