前段时间在排查问题过程中我使用了jprofiler远程进行了jvm资源使用情况的监控,从系统的损耗来看,jprofiler对系统资源尤其是内存的消耗是非常庞大的。当时配置的jprofiler内存使用上线是1G,后来发现系统内存在整个测试过程中出现持续上涨的趋势,最后稳定在3G左右(JVM的内存我们配的上限值是2G)。
从这个情况来看,如果我们要在测试过程中利用图形界面的形式实时监控jvm内存的使用情况,使用jprofiler是不合适的;在对几个性能测试工具进行评估后,我们最终选定了visualvm进行我们的java资源监控,下面我将讲述一下如何配置visualvm监控jvm资源以及在监控过程中visualvm在server上面的性能消耗情况
1. 如何配置visualvm监控
visualvm支持在linux和windows上启用图形界面监控jvm的资源,基于目前我们的server资源比较紧张,而且从监控方便的角度来分析(我们现有server的linux系统是关闭图形界面的,如果要支持visualvm的图形显示需要安装插件),我推荐在自己的windows环境中安装监控的客户端
Visualvm目前支持两种remote connection方式,分别是jstatd和JMX方式;我看了一下官方的说明文档,如果是针对jboss的监控,官方还是推荐使用JMX的方式监控,因此下面我就讲述一下如何在server端以及客户端配置JMX方式监控的visualvm:
(1)首先要修改JDK中JMX服务的配置文件,以获得相应的权限:
进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下,
a. 将jmxremote.password.template文件复制为jmxremote.password
b. 调整jmxremote.access和jmxremote.password的权限为只读写,可以使用如下命令
chmod 600 jmxremote.access jmxremote.password
c. 打开jmxremote.password文件,去掉
# monitorRole QED
# controlRole R&D
这两行前面的注释符号
(2)修改env.sh
打开env.sh文件,并在JVM的启动配置中添加如下信息:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.150.218 其他配置”
这几个配置的说明如下:
-Dcom.sun.management.jmxremote.port:这个是配置远程connection的端口号的,要确定这个端口没有被占用
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:这两个是固定配置,是JMX的远程服务权限的
-Djava.rmi.server.hostname:这个是配置server的IP的,要使用server的IP最好在机器上先用hostname –i看一下IP是不是机器本身的IP,如果是127.0.0.1的话要改一下,可以不用修改,否则远程的时候连不上,目前我们的server上我已经都改好了
(3)Windows客户端配置
JDK 1.6版本自带visualvm,只需要进到bin目录下启动即可
启动后页面比较简洁,配置也很简单:
a. 点击左侧菜单的add Remote host,输入server的IP,然后再advanced settings里配置端口(注意这个端口要和server上的端口一致)
相关推荐
在本场景中,我们关注的是如何利用JMX来远程监控服务器上的关键资源,如CPU利用率、内存状态、已加载类的数量以及堆内存信息。下面将详细探讨这些知识点。 一、JMX 概述 JMX 是一种服务导向架构,它定义了管理和...
2. `jmxremote`:这部分可能包含配置JMX远程访问所需的库和文档,比如`jmxremote.password`和`jmxremote.access`文件,它们用于设置JMX远程连接的安全性。 3. `jmxri.jar`和`jmxtools.jar`:这两个JAR文件是JMX RMI...
它包含了支持JMX远程连接的类和配置,允许你从远程主机或不同的Java虚拟机(JVM)中管理和监控应用程序。通常,你需要将这个库与`jmxri.jar`一起使用,以启用JMX服务的远程连接。这包括了JMX Remote Lifecycle API,...
JMX远程接口允许管理员或管理系统从远程位置对Java应用程序进行管理。它扩展了基本的JMX功能,使得管理者可以通过网络来连接到MBean服务器,执行操作、获取属性值或接收通知。这个版本可能包含了RMI(Remote Method ...
jmxri.1.2.1.jar包含了实现JMX远程协议的类和接口,使得管理者能够通过网络来监控和控制运行在不同机器上的Java应用。这个库提供了RMI(Remote Method Invocation)实现,使得JMX代理(MBeans)可以被远程调用和管理...
JMXri(JMX Remote Interface)是JMX的一部分,实现了JMX规范中的远程访问功能,使得管理者能够远程控制和监控Java应用,无论是本地还是分布在不同网络上的应用。 【压缩包子文件的文件名称列表】中的`jmxri-1.2.1....
代理则允许远程访问MBean服务器,使得在不同网络环境下的系统间可以进行管理操作。 在jmxdemo中,服务端部分通常会实现MBeans,注册它们到MBean服务器,并启动监听器以接受来自客户端的连接请求。这些MBeans可以是...
1. 配置Hadoop和HBase的JMX服务,开启JMX监听端口,并确保防火墙设置允许远程访问。 2. 安装和配置JMX客户端工具,如jconsole、jmxterm或自定义脚本。 3. 连接并查询HBase和Hadoop的MBeans,获取需要的监控数据。 4....
JMX远程API规范定义了如何通过网络连接到代理层,以便远程管理和监控应用。这一层涉及到连接器、远程连接器、一般连接器等,这些连接器可以将本地的JMX代理暴露为远程服务,从而实现对本地和远程资源的统一管理。 ...
3. **JMX远程监控** 要实现远程监控,需要配置JMX RMI服务,让JMX服务器暴露一个RMI注册表,允许远程客户端连接。这通常涉及到在Java虚拟机(JVM)启动时添加特定的系统属性,如`com.sun.management.jmxremote`、`...
在这个文档中,我们将深入探讨 JMX 中的关键 API,特别是 `javax.management.remote` 包中的 `JMXAuthenticator` 和 `JMXConnectionNotification`。 首先,我们来看 `JMXAuthenticator` 接口。这个接口定义了远程...
6. **安全性**:JMX支持安全管理,可以通过设置权限来控制谁可以访问和操作MBeans。 7. **使用场景**:JMX常用于性能监控、日志管理、配置管理以及健康检查等任务。例如,你可以通过JMX监控Tomcat服务器的线程池...
最后,代理允许远程访问和管理MBeans,使你能够在不同的网络环境中跨进程或跨机器管理资源。 JMX使用三种类型的MBeans:标准MBeans、动态MBeans和模型MBeans。标准MBeans基于预定义的接口,动态MBeans则能动态地...
- `jmxri-1.2.1.jar`:JMX Remote Lifecycle API,实现了JMX的远程访问功能,使得我们可以远程监控和管理应用。 - `jmxtools-1.2.1.jar`:包含了一些JMX工具,如JConsole,用于图形化地查看和管理Java应用程序的...
5. **JMX连接器**:为了远程访问MBean,我们需要设置JMX连接器。这可能包括RMI(Remote Method Invocation)JMX连接器或JMXMP(JMX Message Protocol)连接器,它们允许外部工具或应用程序连接到JMX服务器。 6. **...
4. **代理(Proxy)**:在客户端,可以使用JMX代理来访问远程MBeanServer。代理类提供了与MBean相同的方法,简化了对远程资源的调用。 5. **连接器(Connector)**:JMX连接器提供客户端与MBeanServer之间的通信。...
4. **管理接口暴露**:可能通过JMX的RMI或者JMX Connectors暴露MBeanServer,使得远程客户端能够访问。 5. **客户端工具**:使用JConsole、VisualVM或其他支持JMX的工具,连接到MBeanServer,查看和操作MBean。 ...
然后,通过设置适当的JMX代理,允许中心控制台远程访问这些MBean服务器。这样,就可以实现对整个系统的集中监控和管理。 #### 六、结论 基于JMX的IT系统管理关键技术为现代IT系统提供了强大的监控和管理能力。通过...
例如,你可以用JMX创建自定义的MBeans来暴露应用程序的关键指标,然后通过JMXRI实现远程访问,而JMS可以用来在不同的管理节点之间传递这些信息,实现远程监控和报警。 在实际开发中,为了保证兼容性和稳定性,这些...
`jmxri.jar`代表JMX Remote Interface,它是JMX的一部分,提供了远程访问和管理Java应用的能力。这个库包含了实现JMX远程协议所需的类和接口,使得管理员可以通过网络对远程Java应用程序进行监控和管理。它支持MBean...