整理下怎么通过JDK提供的视图化工具来监视java应用。

1.配置文件

远程机器上,建立jstatd 的 security policy 文件,比如建立在$JAVA_HOME/bin目录下:
文件jstatd.all.policy:
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};

2.启动jstatd

同样,也是在远程机器上,进入$JAVA_HOME/bin目录,执行:
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=false -p 1099 &

jstatd的详细说明可以参照:http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html
这里有对jstatd各个命令选项的详细说明。

3.打开监视客户端

一样来说,我会在客户端(比如本机PC)来监视远程机器,进入客户端的jdk/bin目录下,会看到有jvisualvm.exe
打开jvisualvm.exe,

如果需要添加监视的插件,可以进入:工具->插件,进行下载初始化相关的插件来,这里我已经初始化了Visual GC来监视内存方面。

可以监视:本地、远程和快照。
本地会自动扫描到本地的java应用
而远程需要添加远程的ip
添加远程ip后,发现还是无法自己扫描到远程的java应用时,可能是没将远程机器的ip设置好,
执行命令hostname -i
如果是127.0.0.1,则需要设置成远程机器的/etc/hosts文件,将远程机器ip设置(而不是127.0.0.1),

设置好远程机器ip后,可以自动扫描到远程的java应用了。

如果设置好hostname还是无法扫描到java应用,则需要启动Jstatd时还加上参数-J-Djava.rmi.server.hostname=192.168.20.112,192.168.20.112为远程hostname。

可以扫描到远程的java应用,但发现监视不了CPU这项,这个需要我们添加JMX监视,

需要在java应用的启动参数加上:
-Djava.rmi.server.hostname=192.168.20.112 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
其中192.168.20.112是远程被监视机器的ip。
如果需要设置JMX连接密码,可以-Dcom.sun.management.jmxremote.authenticate=true

详细添加JMX可以参照:https://htmlpreview.github.io/?https://raw.githubusercontent.com/visualvm/visualvm.java.net.backup/master/www/jmx_connections.html

4.JMX密码连接

在$JAVA_HOME//jre/lib/management目录下的jmxremote.password.template文件,复制一份名字改成jmxremote.password,

# Following are two commented-out entries.  The "measureRole" role has
# password "QED".  The "controlRole" role has password "R&D".
#
# monitorRole  QED
# controlRole   R&D

打开注释:

monitorRole  QED
controlRole   R&D

则表示JMX的连接角色密码为monitorRole / QED,或者controlRole / R&D,这两种是不同的角色,在文件jmxremote.access(也是在同一个目录下)中会说明这两个角色的权限:

# Default access control entries:
# o The "monitorRole" role has readonly access.
# o The "controlRole" role has readwrite access and can create the standard
#   Timer and Monitor MBeans defined by the JMX API.monitorRole   readonly
controlRole   readwrite \create javax.management.monitor.*,javax.management.timer.* \unregister

连接JMX时,输入对应角色密码即可:

远程机器的java应用重新启用后,则监视客户端需要添加JMX连接,连接成功后,则可以看到CPU等监视项了。

...

VisualVM监视相关推荐

  1. visualvm远程jvm_如何使用VisualVM监视服务器上的多个JVM

    visualvm远程jvm 在上一篇文章中,我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server. 这些启动之后,您如何检查它们的健康状况? 您可以使用管理员的/ c ...

  2. 如何使用VisualVM监视服务器上的多个JVM

    在上一篇文章中,我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server. 这些启动之后,您如何检查它们的健康状况? 您可以使用管理员的/ console网络应用. 但是 ...

  3. Java VisualVM

    文章目录 1.Java VisualVM简介(Introduction to Java VisualVM) 1.1 Java VisualVM简介(Introduction to Java Visua ...

  4. 一个经典的字母排列算法

    最近在研究一个问题,自己尝试些写了一个算法: 问题描述:给出一段字符,比如[a,b,c,d--],输出任意长度大于n的字符组合 分析:首先确立数学模型.这个问题的本质是排列问题,即:AL2 + AL3 ...

  5. JVisualVM、Visual GC

    JVisualVM JVisualVM Java VisualVM 是一款 JDK 自带免费的性能分析工具 public class JVisualVM {public static void mai ...

  6. Java Basic3(泛型、Muti-Processing、JMX、Stand Mbean、Dynamic Mbean)

    一.泛型 Java1.5后支持. 注:C++中有Template,是真正的泛型,但是会导致类膨胀:Java为伪泛型,编译时自动解析为原类型,也叫类型擦除. 1.Collection 2.Type er ...

  7. visualvm远程jvm_VisualVM:通过SSH监视远程JVM(是否为JMX)

    visualvm远程jvm VisualVM是用于监视JVM(5.0+)的有关内存使用,线程,GC,MBeans等的出色工具.让我们看看如何通过SSH使用它来监视(甚至使用JMX进行配置)使用JMX或 ...

  8. VisualVM:通过SSH监视远程JVM(是否为JMX)

    VisualVM是用于监视JVM(5.0+)的有关内存使用情况,线程,GC,MBeans等的出色工具.让我们看看如何通过SSH使用它来监视(甚至使用JMX对其进行采样,对带有JMX的远程JVM进行监视 ...

  9. 深入理解 Java 虚拟机-如何利用 VisualVM 对高并发项目进行性能分析

    来自:好好学java 前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择Visua ...

最新文章

  1. python 搭配 及目录结构
  2. 【python自动化第八篇:网络编程】
  3. fmdb和mysql的区别_FMDB
  4. 解决:building 'twisted.test.raiser' extension安装scrapy报错
  5. linux下sqlite3的应用
  6. kdj值应用口诀_KDJ买卖绝学!背熟它短线选股不用愁
  7. 2012年之前Mac Book pro 安装新系统macOS 10.15 Catalina 制作U盘启动盘
  8. mysql的驱动jar包下载
  9. CBR VBR ABR
  10. 《CSS权威指南》读书笔记3
  11. 什么是实验室人员比对人员_实验室人员比对分析方法的讨论
  12. TODO注解及其他类似注解说明
  13. 姿态估计1-06:FSA-Net(头部姿态估算)-源码无死角讲解(1)-训练代码总览
  14. 期权学习之常见收益结构
  15. python爬虫数据分析毕业论文_Python 爬虫实操,顺便做了个数据分析
  16. MySQL异常java.sql.SQLSyntaxErrorException
  17. 重装系统后发现只有系统盘c盘怎么办?
  18. C# Socket客户端采用双线程断网重连断线重连)
  19. 386高校毕业设计选题
  20. __setup宏定义

热门文章

  1. 洛谷 P4781 【模板】拉格朗日插值
  2. python-docx template 操作word文档
  3. 樱花——代表日本民族性的国花
  4. Python打印各种图形
  5. LeetCode刷题笔记 动态规划 背包问题
  6. “疯狂木头”设计的落雁弹弓
  7. 转转前端周刊第三十五期
  8. 测试用例设计-边界值覆盖
  9. Facebook正式上线视频直播:APP充当电视直播间
  10. CSDN的markdown语法