自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建的MBean)注册到它里面,然后暴露给JMX client管理。简单来说就是每个Java程序都可以通过JMX来被JMX client管理,而且这一切都是自动发生的。而VisualVm就是一个JMX Client。

VisualVm能够自动发现本机的Java进程,如果要监控远程主机上的Java进程则需要显式地配置JMX连接,下面讲配置方法:

第一步:已经用jstatd连接了远程主机

已经根据利用VisualVm远程监控Java进程里的方法在VisualVm里添加了远程主机。

PS. 在实际使用过程中这个似乎不是必须的,但是如果不做,有些信息就会获取不到,因此还是做一下吧。

第二步:与启动相关的System Properties

要给远程主机上的监控的Java进程在启动时必须带上几个JMX相关的System Properties(常用的几个):

  • com.sun.management.jmxremote.port, 指定暴露的JMX端口。
  • com.sun.management.jmxremote.ssl, 指定是否使用SSL,在开发环境下可以是false,但是在生产环境下强烈建议为true。
  • com.sun.management.jmxremote.authenticate, 指定是否需要密码才能够创建JMX连接。

为了演示目的,我们用Tomcat来测试,不开启ssl和authenticate,把JMX端口设置为1100,执行下列命令启动Tomcat:

CATALINA_OPTS='-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1100 -Djava.rmi.server.hostname=k8s-oracle' bin/startup.sh

注意上面有一个-Djava.rmi.server.hostname=k8s-oracle参数,JMX agent本质上也是一个RMI server,因此需要指定这个参数,否则就会像利用VisualVm远程监控Java进程里提到的一样,VisualVm无法连接到该Java进程。
想学习更多java知识的朋友可以进群:874811168 一起学习 还有全套的免费资料领取

PS. 使用SSL方式保护JMX连接的方法会另写文章说明。

第三步:创建JMX连接

在远程主机上右键,选择添加JMX连接(在下图里出现了之前启动的Tomcat进程):

根据Java进程启动时设置的JMX System Properties配置JMX连接:

成功后你会发现多了一个进程,小图标上有JMX字样:

双击这个进程,你就能看到CPU、线程、还有MBeans了。

出处:https://segmentfault.com/a/1190000016636787

利用VisualVm和JMX远程监控Java进程的更多相关文章

  1. Zabbix 通过 JMX 监控 java 进程

    参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] [ Monit ...

  2. 用JMX远程监控Tomcat

    要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置. 注意:此配置添加在catalina.bat文件开头的注释行(rem)后面即可. 不需鉴权的配置: 先修改Tomcat的启动 ...

  3. java visualVM(jconsole)远程监控服务器java进程

    1. JMX方式(jconsole也可通过此方式进行连接) jmx方式能监控到CPU信息,但无法使用visualVM的visualVM GC插件    jmx无密码方式 监控普通的java进程 . 设 ...

  4. VisualVM使用Jstatd和JMX远程监控配置(转载)

    一.Jstatd远程监控服务器配置 jstat可以实时显示本地或远程JVM进程中类装载.内存.垃圾收集.JIT编译等数据.如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下: 1. 在JA ...

  5. Linux记录-JMX监控JAVA进程

    3.修改xxx.sh 加入export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana ...

  6. 通过JDK常用工具监控Java进程的内存占用情况

    目录 1 JDK 工具的使用 2 查看 GC 日志信息 3 添加 JMS 远程监控 Tomcat是一款常用的Web容器, 它是运行在 JVM(Java Virtual Machine) 中的一个Jav ...

  7. JMX远程监控JVM

    远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配 ...

  8. Zabbix通过JMX方式监控java中间件

    Zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Java-gateway”:它是用java写的一个程序. 工作原理: zabbix_server想知道一台主机上的特定 ...

  9. VisualVM远程监控Java

    1.服务器启动jstatd服务设置: jstatd将使用RMISecurityPolicy,并且需要指定安全策略文件. 安全策略文件必须符合安全策略语法,通过命令 jstatd -J-Djava.se ...

随机推荐

  1. Android Studio waiting for debugger 卡死

    当你使用AS进行调试时,发现卡在进入调试模式的 waiting for debugger 不动了,出现这种问题是adb端口被抢占了.解决方法就是: 在命令行: netstat -ano|findstr ...

  2. Android application backup

    警告 AndroidMenifest中application标签下android:allowBackup="true"时,会警告: Warning:On SDK version 2 ...

  3. [C#]读取不同版本的excel文件的方法

    --------------------------------2007及以上的版本-------------------------------- 测试如下: //DataInterface.Met ...

  4. ace后台管理系统扁平化框架

    Bootstrap ACE后台管理界面模板(扁平化) 所属分类:后台模板 文件大小:1.22 MB 阅读:236697次 下载:55929次 来源:www.daimajiayuan.com 分享到:更 ...

  5. 第 8 章 容器网络 - 054 - 准备 macvlan 环境

    准备 macvlan 环境 macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置 ...

  6. PhantomJS框架(初识无头浏览器)

    博主今天看到大神聊起 headless,首先我去了解了下这个概念  无头浏览器 selenium框架是有头浏览器的代表,即可看得见的浏览器 而headless browser无头浏览器,即看不见的浏览 ...

  7. LeetCode--255--用队列实现栈(java版)

    使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...

  8. ASP.Net MVC多语言

    .NET MVC 多语言网站 通过浏览器语言首选项改变MVC的语言,通过浏览器语言选项,修改脚本语言. 一.添加资源文件 1.添加App_GlobalResources文件夹. 2.添加默认的资源文件 ...

  9. Oracl 12c安装

    Oracl安装部署 一.前置条件准备 修改hostname: hostname oracle 修改/etc/hosts:添加192.168.10.106 oracle 添加软件开发工具 搭建yum源 ...

  10. 为什么一刷新页面session没了

    最常见的的原因: session_start(); 没有放在文件最上面……