JVM笔记

作者: 汉寿周杰伦 | 来源:发表于2018-07-31 11:08 被阅读15次

JMX全称Java Management Extensions, 为Java应用提供管理扩展功能。
在Java 5的时候引入

概念

Name Description
MBean 全称为Managed Bean, 可以实现一个MBean来JMX提供管理内容
MBean Server(也叫JMX Agent) 提供集中注册管理MBean功能,允许远程通过他代理操作MBean
JMX Connectors 通过实现不同的通讯协议,来允许远程访问
Jconsole 一款JMX图形客户端,运行用户访问本地或者远程的JMX,默认包含在Java SDK工具中

Referering Java Opts

启动Java可以赋予JVM Machine一些参数,例如设置运行内存堆栈的大小。
下面列举一些有关JMX的相关参数

参数名 类型 描述
Dcom.sun.management.jmxremote 布尔 是否支持远程JMX访问,默认true
Dcom.sun.management.jmxremote.port 数值 监听端口号,方便远程访问
Dcom.sun.management.jmxremote.authenticate 布尔 是否需要开启用户认证,默认开启
Dcom.sun.management.jmxremote.ssl 布尔 是否对连接开启SSL加密,默认开启
Dcom.sun.management.jmxremote.access.file 路径 对访问用户的权限授权的文件的路径,默认路径JRE_HOME/lib/management/jmxremote.access
Dcom.sun.management.jmxremote. password.file 路径 设置访问用户的用户名和密码,默认路径JRE_HOME/lib/management/ jmxremote.password

例如,你需要启动一个常驻后台的springboot程序(比如app.jar),如何开启一个支持远程访问的JMX,可以尝试下面的命令

java -jar app.jar \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=10080 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false

对于关于JMX相关的参数你配置这些就够了,就可以使用Jconsole连接,


jconsole panel

这个仅仅限于你在本地访问,也就是说远程访问。

是前面描述的JMX Connector,可以添加一个参数

-Djava.rmi.server.hostname=服务器的IP地址或者域名

就可以开启远程RMI协议访问,正常情况此时应该就能正常看到类似下面的界面

!JMX Runtime](https://img.haomeiwen.com/i9707076/6bde73e866ed8764.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

有可能防火墙的原因屏蔽了相关接口。在Java启动时,JMX会绑定一个接口,RMI也会绑定一个接口,在复杂网络环境下,有可能你通过打开防火墙允许了JMX端口的通过,但是由于没有放行RMI,远程连接也是会失败的。

这是因为JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,很有可能这个端口会被防火墙给阻止,以至于连接超时失败。好在在Java7u25版本后可-Dcom.sun.management.jmxremote.rmi.port=端口号来定死这个端口,好消息是,你可以将这个端口和jmx.port的端口设置成一个端口,这样防火墙策略就只需要同行一个端口就可以了。

额外内容:

Sample for authtication

# password file
monitorRole password1
controlRole password2

# access file
monitorRole readonly
controlRole readwrite

相关文章

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

  • JVM学习笔记

    JVM学习笔记 JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种...

  • Java笔记之 1. JVM学习

    一、 JVM学习笔记 JVM:Java Virtual MachineJVM总感觉那么的神秘,底层的东西,试着把一...

  • 第二周 JVM运行机制

    笔记 JVM启动流程启动过程如下图所示:bootup.png注释:jvm.cfg的用途:Controls the ...

  • JVM内存管理及垃圾回收机制

    JVM笔记 JDK:Java、JVM、Java API类库,是支持java程序开发的最小环境。JRE:Java A...

  • 【JVM篇】【JVM的组成】

    【JAVA】【JVM篇】【JVM的组成】 来自二线的码农笔记,用自己的理解总结知识点,互相学习 1. JVM概念 ...

  • ElasticSearchx

    ElasticSearch 笔记修改ES内存的占用:/etc/elasticsearch/jvm.options ...

  • Java运行时数据区

    原文戳这里JVM Run-Time Data Areas 下面是我阅读JVM规范的笔记。 1.单个线程的数据区(不...

  • JVM学习笔记之类装载器-ClassLoader

    JVM学习笔记之类装载器-ClassLoader 本文字数:2300,阅读耗时7分钟 JVM体系结构概览 类装载器...

  • JVM笔记

    一、JVM运行时划分的区域 1.程序计数器 用于存放当前线程下一个执行命令的指针。每个线程私有一个程序计数器。 2...

网友评论

      本文标题:JVM笔记

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