VisualVm是官方提供的JVM监控工具,能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,GC活动,反向查看分配的堆栈等等,值得我们去学习。
1.Jstatd:
1.1配置jstatd.policy
在java11中由于没有tools.jar,所以原有的配置jstatd.policy方式行不通
jstatd.policy改成如下即可
grant codebase "jrt:/jdk.jstatd" {
permission java.security.AllPermission;
};
grant codebase "jrt:/jdk.internal.jvmstat" {
permission java.security.AllPermission;
};
1.2 在服务器中启动jstatd
jstatd -J-Djava.rmi.server.hostname=79.129.161.x -J-Djava.security.policy=./jstatd.policy -p 1100
注意
hostname是自己的服务器ip地址
如果不用-p参数指定端口,则默认是1099端口
1.3 配置客户端连接
在visualvm中点击File/AddRemoteHost,如下输入服务器地址/端口即可
但是此时的visualvm监控是不完整的虽然可以监控GC,堆,类线程等情况,但是无法监控CPU使用情况以及无法查看MBeans,这就要配置JMX连接
2.JMX
抱歉,没有。
我使用OpenJdk的jdk11.0.2,jdk11.0.1在两个不同的搭载CentOS7系统的服务器上测试网上所谓的配置jmx连接,一点用都没有,在Ubuntu18上测试也没用。接连搞了好几天没什么进展,真是日了狗了(Sad
如下为网传配置:
-Dcom.sun.management.jmxremote.port=2222
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=2222
-Djava.rmi.server.hostname=yourIP
-Dcom.sun.management.jmxremote.local.only=false
如果日后找到方法,我就更新该博文,也欢迎大家给我提供正确的方法。
半残状态下所有关于CPU的相关监控就没有了,不过VisualGC功能还是完整的。
参考资料
欢迎访问我的 个人网站(主要), Github, 优快云(主要), 博客园, 简书, 掘金, 知乎, 微信公众号:HelloVant(主要)