美文网首页
visualvm安装、连接jmx和jstatd查看jvm运行状态

visualvm安装、连接jmx和jstatd查看jvm运行状态

作者: cutieagain | 来源:发表于2020-05-11 14:39 被阅读0次

配置 jstatd.policy 并启动jstatd

cd /opt
mkdir jstatd
mkdir jmx

# 新建 jstatd.policy 文本文件
vim /opt/jstatd/jstatd.policy

# 输入如下内容并保存
grant codeBase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
}; 
# 遇到没有权限操作加入如下的内容
grant {
    permission java.util.PropertyPermission "*", "read,write";
}
# 新建jstatd.sh文件,用于启动
vim /opt/jstatd/jstatd.sh

# 输入如下内容
#!/bin/sh

# 获取 jstatd 线程id并杀死
PID=`jps | grep Jstatd | awk '{print $1}'`
if [ -n "$PID" ]; then
   echo "kill -9 $PID ..."
   kill -9 $PID
fi

# 启动jstatd
jstatd \
-J-Djava.rmi.server.hostname=x.x.x.x \
-J-Djava.security.policy=/opt/jstatd/jstatd.policy -J-Djava.rmi.server.logCalls=true \
-J-Xms128M \
-J-Xmx128M \
-J-XX:NewRatio=1 \
-J-XX:SurvivorRatio=8 \
-J-XX:PermSize=16M \
-J-XX:MaxPermSize=16M \
< /dev/null &> /opt/jstatd/jstatd.log &

# chmod +x /opt/jstatd/jstatd.sh  赋予执行权限
# 启动jstatd  /opt/jstatd/jstatd.sh
# 查看jstatd是否启动
[root@iZuf642z8nxxensw71zj0aZ ~]# jps -l 
1066 sun.tools.jstatd.Jstatd
12383 sun.tools.jps.Jps

# 查看监听的端口
[root@iZuf642z8nxxensw71zj0aZ ~]# netstat -anp | grep jstatd
tcp        0      0 0.0.0.0:1099            0.0.0.0:*               LISTEN      1066/jstatd                                                                                                                                                                                                    
tcp        0      0 0.0.0.0:45451           0.0.0.0:*               LISTEN      1066/jstatd                                                                                                                                                                                                    
tcp        0  26974 172.19.31.45:45451      47.116.60.25:55739      ESTABLISHED 1066/jstatd                                                                                                                                                                                                    
tcp        0  14094 172.19.31.45:45451      180.165.239.210:56506   ESTABLISHED 1066/jstatd                                                                                                                                                                                                    
unix  2      [ ]         STREAM     CONNECTED     49080291 1066/jstatd       
参数 含义
java.rmi.server.hostname 当前机器ip x.x.x.x
java.rmi.server.hostname 远程访问当前机器ip x.x.x.x
java.security.policy 安全策略存放路径 /opt/jstatd/jstatd.policy
java.rmi.server.logCalls 日志调用 true
Xms jvm启动时分配的内存 128M
Xmx jvm运行过程中分配的最大内存 128M
Xss jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M
XX:NewRatio 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
XX:SurvivorRatio 设置年轻代中Eden区与Survivor区的大小比值
XX:PermSize 非堆内存初始值,默认是物理内存的1/64
XX:MaxPermSize 设置最大非堆内存的大小,默认是物理内存的1/4

配置JMX端口监听

为了访问的安全性,需要设置访问密码,也可跳过不配置

### Linux
cp "$JAVA_HOME/jre/lib/management/jmxremote.password.template" "/opt/jmx/jmxremote.password"
cp "$JAVA_HOME/jre/lib/management/jmxremote.access" "/opt/jmx/jmxremote.access"

# 赋予读写的权限 7 4读 2写 1执行  
# chmod +x 赋予执行权限
sudo chmod  -R 777 /opt/jmx/jmxremote.password
sudo chmod  -R 777 /opt/jmx/jmxremote.access
# sudo vim /opt/jmx/jmxremote.password
jmxadmin jmxpwd

# sudo vim /opt/jmx/jmxremote.access
jmxadmin readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
# 启动应用时候配置的参数
nohup java -jar \
-Dcom.sun.management.jmxremote \
-Djava.rmi.server.hostname=x.x.x.x \
-Dcom.sun.management.jmxremote.port=1090 \
-Dcom.sun.management.jmxremote.rmi.port=1090 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.password.file=/opt/jmx/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/opt/jmx/jmxremote.access \
-Dspring.profiles.active=test \
/home/locker_server/ineyes-admin.jar > server.log 2>&1 &

启动出问题
Password file read access must be restricted: /opt/jmx/jmxremote.password
解决:
在配置JMX远程访问的时候,设置jmxremote.password文件权限,修改该文件时添加写权限,chmod +w /opt/jmx/jmxremote.password ,放开角色信息那俩行的注释,保存,再使用chmod 0400 /opt/jmx/jmxremote.password

安装visualvm

下载visualvm
点击插件,安装visualgc

visualgc插件安装
点击增加远程连接
远程连接
远程连接默认使用jstatd端口
连接设置
这些连接都是基于jstatd基础的
连接后查看
新增的jmx连接需要输入之前设置好的用户名和密码
输入jmx用户名密码以访问

安装完毕示意图


visualgc 示意图

注意:

如果连接不上,注意端口是否开放

参考

JVM调优总结 -Xms -Xmx -Xmn -Xss
JVM 优化实战

相关文章

  • visualvm安装、连接jmx和jstatd查看jvm运行状态

    配置 jstatd.policy 并启动jstatd 参数含义值java.rmi.server.hostname当...

  • VisualVM监控远程JVM

    2种监控方式:JMX和jstatd VisualVM对于JMX和jstatd2种监控方式都支持。 JMX监控 pr...

  • VisualVm 通过JMX连接远程监控Tomcat

    docker版 如果是docker启动的tomcat,可以查看:VisualVm 通过JMX连接远程监控Tomca...

  • VisualVM远程连接监控JVM(JMX连接)

    VisualVM是JDK自带的一款java应用性能监测工具。它可以做到: 显示虚拟机进程以及进程的配置,环境信息 ...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

  • Java - jmx远程调优

    java远程调优可采用两种方式进行连接,jmx与jstatd,此文演示如何配置jmx进行连接调优。 配置指南 De...

网友评论

      本文标题:visualvm安装、连接jmx和jstatd查看jvm运行状态

      本文链接:https://www.haomeiwen.com/subject/nlngwhtx.html