【jvm调优工具visualVM】

visualVM

visualVM是一个功能强大的jvm可视化工具,监控内存、cup、线程、GC等java程序运行时的详细信息,可安装多种插件。

下载地址:https://visualvm.github.io/download.html


远程监控

基于jstatd和jmx


服务器开启jstatd

jstatd基于RMI,提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。

-J-Djava.rmi.server.hostname:

修改服务器域名映射,如果是127.0.0.1需修改为服务器公网ip

[root@phost ~]# vim /etc/hosts //将127.0.0.1修改为公网ip
47.94.121.121   localhost       localhost.localdomain   localhost4      localhost4.localdomain4

[root@phost ~]# hostname -i //查看hostname(不为127.0.0.1)

-J-Djava.rmi.server.logCalls=true:

使用日志

-J-Djava.security.policy:

指定安全策略

[root@phost ~]# cd /usr/local //进入任意目录
[root@phost ~]# vim jstatd.all.policy //创建.policy后缀的文件作为安全策略文件

.policy文件内容:
从jdk9开始,lib目录下无tools.jar文件

grant codebase "jrt:/jdk.jstatd" {
                     permission java.security.AllPermission;
            };
grant codebase "jrt:/jdk.internal.jvmstat" {
permission java.security.AllPermission;
};

jdk8或之前的版本.policy文件内容:

grant codebase "$JAVA_HOME/lib/tools.jar" {
 permission java.security.AllPermission;
 };

修改后保存

最终指令

[root@phost ~]# nohup jstatd -J-Djava.rmi.server.hostname=47.94.121.121 -J-Djava.security.policy=/usr/local/jstatd.all.policy &
//hostname需改为服务器ip,nohup &后台运行


需开放端口,默认1099,如果是阿里云服务器需在安全组中放行端口

[root@phost ~]#  lsof -i |grep jstatd  //查看jstatd占用的端口

将查询出的相关端口在防火墙和阿里云安全组放行


配置JMX

JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。

找到catalina.sh所在目录:

[root@phost ~]# find / -name catalina.sh   //根目录下按名称查找catalina.sh文件
find:/proc/800885: 没有那个文件或目录
/usr/local/tomcat/bin/catalina.sh

[root@phost ~]# vim  /usr/local/tomcat/bin/catalina.sh  //vim + 查询出的路径,修改catalina.sh内容

将以下运行参数加入到正文头部即可
JAVA_OPTS=' -Djava.rmi.server.hostname=47.94.121.121  -Dcom.sun.management.jmxremote.port=8888  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=false '

-Djava.rmi.server.hostname:这个参数是服务器ip

-Dcom.sun.management.jmxremote.port: jmx远程连接时使用的端口,设置成任意未被占用的端口即可

Dcom.sun.management.jmxremote.ssl:是否使用ssl,ssl是一个通信加密的安全协议

-Dcom.sun.management.jmxremote.authenticate:是否需要身份认证,设置为false不需要用户名和密码

如果设置为true则需要额外配置以下2个参数

'-Dcom.sun.management.jmxremote.password.file=/usr/local/jmxremote.password   -Dcom.sun.management.jmxremote.access.file=/usr/local/jmxremote.access'

Dcom.sun.management.jmxremote.access.file:access文件

[root@phost ~]# vim /usr/local/jmxremote.access   //任意目录下创建access文件

ssss readwrite  //格式为: 用户名 (空格)权限

Dcom.sun.management.jmxremote.access.file:密码文件

[root@phost ~]# vim /usr/local/jmxremote.password   //创建密码文件

ssss 123456  //格式为: 用户名 (空格) 密码

在防火墙中将jmx端口放行

[root@phost ~]# lsof -i |grep java     //查询java占用的端口,将查询到的 *:xx(LISTEN)端口进行放行

java      2959288     root   16u  IPv6 388782439      0t0  TCP *:46485 (LISTEN)
远程连接

请添加图片描述
remote右键添加jmx连接,ok,大功告成,下图visual GC插件,可以看到堆详情和gc细节,大功告成
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知道37号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值