visualvm正如其名,它能让我们以可视化的方式观察JVM的运行信息,包括启动参数、堆内存、加载的类等。
visualvm既可以观察本地的JVM,也可以观察远程服务器上的JVM。
以观察远程服务器上的tomcat为例。
jstatd
想要远程监控JVM需要jstatd来简化连接和数据获取操作。
启动jstatd需要注意,首先是启动jstatd的用户要有权限监控tomcat的进程,比如root用户,或者启动tomcat的用户。
然后,jstatd相当于监视另一个JVM的运行状态,会带来风险,默认会报出AccessControlException
异常,可以使用如下方式规避,
新建文件jstatd.all.policy
,内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
使用如下为命令启动:
jstatd -J-Djava.security.policy=jstatd.all.policy -p 1099
,其中1099用来指定jstatd监听的端口号
使用ss -nlpt | grep 1099
验证jstatd是否已经启动
visualvm可以从 官网 下载,
解压后,双击/bin/visualvm.exe
即可。
选择添加远程服务器:
填入正确的远程主机名和端口号:
PS,visualvm可以看到远程服务器上的所有JVM,如果想要确定其中某个,可以通过pid来选择,这里提供两种获取pid的方式:
ss -nltp | grep 8080
,其中8080是tomcat监听的端口号,可依据先前设置更改此项。ps -ef | grep tomcat
命令,原文:https://www.cnblogs.com/SanjiApollo/p/13283973.html