码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用jvm工具排查系统问题


    java-jvm-tool

    Jstatd 远程连接(推荐)

    不用重启项目

    远程机配置

    [demo@localhost jvmtest]$ vi jstatd.all.policy
    
    # 内容
    grant codebase "file:/home/demo/jdk1.8.0_171/lib/tools.jar" {
    permission java.security.AllPermission;
    };
    
    #IP为远程机外网IP(必须配置ip地址)
    [demo@localhost jvmtest]$ nohup jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.16.29.61 -p 1099 -J-Djava.rmi.server.logCalls=true &
    [1] 203089
    [demo@localhost jvmtest]$ nohup: 忽略输入并把输出追加到"nohup.out"
    
    [demo@localhost jvmtest]$
    [demo@localhost jvmtest]$ tail -f nohup.out
    java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
            at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
            at java.security.AccessController.checkPermission(AccessController.java:884)
            at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
            at java.lang.System.setProperty(System.java:792)
            at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
    十二月 19, 2023 2:28:49 下午 sun.rmi.server.UnicastServerRef logCall
    较详细: RMI TCP Connection(1)-127.0.0.1: [127.0.0.1: sun.rmi.registry.RegistryImpl[0:0:0, 0]: void rebind(java.lang.String, java.rmi.Remote)]
    十二月 19, 2023 2:28:50 下午 sun.rmi.server.UnicastServerRef logCall
    较详细: RMI TCP Connection(2)-172.16.29.61: [172.16.29.61: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]
    
    # 记得防火墙开端口或者直接关闭防火墙
    [root@localhost ~]# firewall-cmd --zone=public --add-port=1099/tcp --permanent
    [root@localhost ~]# firewall-cmd --reload
    

    客户端连接

    在配置好环境变量的前提下,直接在cmd下执行 jvisualvm命令。

    客户端运行jvisualvm客户端运行jvisualvm visualvm中添加远程机visualvm中添加远程机

    选中添加的远程机,右击,点击【添加 jstatd 连接】,可以设置端口以及刷新时间。

    jstatd端口配置jstatd端口配置 配置详情配置详情 最终结果最终结果

    JMX 连接

    服务端启动配置

    -Dcom.sun.management.jmxremote.port=8999  \
    -Dcom.sun.management.jmxremote.rmi.port=8999 \
    -Dcom.sun.management.jmxremote.ssl=false  \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Djava.rmi.server.hostname=172.16.29.61 \
    

    客户端连接

    jvisualvm

    首先,右击【远程】,点击【添加远程主机】

    然后,右击添加的主机,点击【添加 JMX 连接】,输入对应端口号。

    添加JMX连接添加JMX连接

    jconsole

    在配置好环境变量的前提下,直接在cmd下执行 jconsole命令。

    新建连接新建连接 可检测死锁可检测死锁

    补充

    linux shell 参数换行(标准说法:续行)

    \Enter,反斜杠后面紧跟回车,表示下一行是当前行的续行。(For Windows, use the carat (^) instead of the backslash (\) to break up a long command into multiple lines)

    nohup java -jar -XX:MetaspaceSize=1024m \
    -XX:MaxMetaspaceSize=2048m  \
    -Dcom.sun.management.jmxremote.port=8999  \
    -Dcom.sun.management.jmxremote.rmi.port=8999 \
    -Dcom.sun.management.jmxremote.ssl=false  \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Djava.rmi.server.hostname=172.16.29.61 \
     -Dlog4j2.formatMsgNoLookups=true \
     ${APP_NAME} --server.port=8082 >> logs/8082.log 2>&1 &
    

    问题

    java.security.AccessControlException: access denied

    可将文件 jstatd.all.policy 文件中的${JAVA_HOME}写成绝对路径即可。

    参考

    Monitoring and Management Using JMX Technology - Java SE Monitoring and Management Guide (oracle.com)

    JDK Tools and Utilities

    Monitoring and Management Using JMX Technology

    Monitoring and Management Guide

    Enabling remote JMX with password authentication only (apache.org)

    JMX 入门(三)认证加密_jmx 加密-CSDN 博客

    为 JMX JConsole 设置用户名密码登录_jconsole 连接本机默认用户名密码-CSDN 博客

    选项 2:在不使用 SSL 的情况下设置 JMX 以进行客户机认证 - IBM 文档

  • 相关阅读:
    数字图像处理 --- 图像的HighBit与LowBit
    ElasticSearch(ES)8.1及Kibana在docker环境下如何安装
    Spring动态代理的两种方式
    Tomcat
    运行游戏“找不到XINPUTI_3.dll无法继续执行代码,总共有五种解决方案
    redis cluster集群搭建
    元音三要素及元音图
    文件上传】通过ServletContext.getReal()获取路径不对
    靓仔的python机器学习入门2.2-特征工程-特征提取
    Mybatis 懒加载使用及源码分析
  • 原文地址:https://www.cnblogs.com/Share-happy/p/17915135.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号