如何通过shell命令行执行jmx中Mbean方法System.gc()?
可以按如下步骤实施:
<1/6>配置jvm参数,两个目标:其一是开启jmx,其二是启用显式执行GC命令-XX:-DisableExplicitGC
-XX:-DisableExplicitGC -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10240 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.3.168
注意:
1> jvm参数配置时,需要指定port和host,尤其是跨网络访问时;
2> jmx启动后,会listen两个port,一个是jvm参数指定的,另一个是随机端口号,如果跨网络访问,注意两个port都需要在防火墙上开启;
3> 访问jmx的完整uri类似:【service:jmx:rmi:///jndi/rmi:192.168.3.168:10240】/jmxrmi,一般客户端都是将协议固化下来,仅需要ip和port即可;
4> 通过jndi方式访问,uri类似:【jndi:rmi://192.168.3.168:10098/jmxrmi】
<2/6>启动目标Java进程,检查jmx是否Listen就绪;
# netstat -tnulp|grep 3058
tcp6 0 0 :::40188 :::* LISTEN 3058/java
tcp6 0 0 :::10240 :::* LISTEN 3058/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3058/java
tcp6 0 0 :::8080 :::* LISTEN 3058/java
tcp6 0 0 :::34035 :::* LISTEN 3058/java
<3/6> 获取cmdline-jmxclient-0.10.3.jar资源,其中仅一个Client java类,通过jmx获取Mbean信息;
<4/6> 通过cmdline-jmxclient获取MBean成功的例子,如下:
# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.3.168:10240 java.lang:type=Memory
Attributes:
ObjectPendingFinalizationCount: ObjectPendingFinalizationCount (type=int)
HeapMemoryUsage: HeapMemoryUsage (type=javax.management.openmbean.CompositeData)
NonHeapMemoryUsage: NonHeapMemoryUsage (type=javax.management.openmbean.CompositeData)
Verbose: Verbose (type=boolean)
ObjectName: ObjectName (type=javax.management.ObjectName)
Operations:
gc: gc
Parameters 0, return type=void
<5/6> 通过命令行执行jmx中的MBean方法,System.gc()
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.3.168:10240 java.lang:type=Memory gc
注意:此处jmx认证未开启,没有username和password,用【-】代替;
<6/6> 通过jdk命令jstat监控gc执行情况,发现FGC次数在增加,gccause是System.gc(),说明通过命令行jmx调用System.gc()执行成功
# jstat -gccause 3514 3000 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 0.00 5.54 6.20 96.48 89.04 1 0.023 2 0.057 0.080 System.gc() No GC
0.00 0.00 5.54 6.20 96.48 89.04 1 0.023 2 0.057 0.080 System.gc() No GC
0.00 0.00 5.50 6.21 96.65 89.04 1 0.023 3 0.082 0.105 System.gc() No GC
0.00 0.00 1.50 6.21 96.75 89.09 1 0.023 4 0.109 0.132 System.gc() No GC
0.00 0.00 5.50 6.21 96.75 89.09 1 0.023 4 0.109 0.132 System.gc() No GC
0.00 0.00 6.47 6.21 96.90 89.09 1 0.023 5 0.131 0.154 System.gc() No GC
【小结】
1> 通过命令行执行jmx中注册MBean的其他方法,也可用此方式,实际应用场景,比如:方便监控并及时干预目标Java应用;
2> 执行System.gc()方法,可以释放Java进程中某些线程访问本地内存,比如DMA,Netty-NIO等产生的内存占用;
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
java
1. MBean (Managed Bean):MBean是JMX中的基本管理单元,它代表了要管理的对象。MBean可以是标准的、自定义的或者由MBean服务器自动创建的。 2. MBean Server:MBean服务器是JMX架构的核心,负责管理MBeans,处理...
jmxri.jar..................
通过阅读和理解这个示例,你可以更深入地了解如何在实际项目中应用JMX RMI MBean管理。这个实例可能包括创建MBean的Java类、配置RMI的脚本或属性文件,以及演示如何从客户端进行连接和操作的测试代码。 总的来说,...
2. **定义属性和方法**:通过`DynaProperty`对象定义属性,并通过`DynaMBean`接口中的方法定义操作。 3. **创建DynaMBean实例**:使用`DynaMBean`实例并通过MBeanServer注册。 通过这种方式,可以实现更灵活的资源...
《深入理解Java代理与JMX技术:以agent-jmx-2.1.6.jar.zip为例》 在Java世界中,代理(Agent)和Java...在实际应用中,我们需要了解JMX的基本概念和工作原理,熟悉Java代理的使用方法,以便充分发挥这个工具的潜力。
使用这个代理,开发者或系统管理员可以轻松地将应用程序集成到JMX环境中,进行远程监控和管理,比如查看性能指标、执行操作或者接收通知。 使用“agent-jmx-2.2.1.jar.zip”时,首先需要将其解压,然后根据开发或...
mvn仓库里面找不到jmxtools-1.2.1.jar,jmxri-1.2.1.jar的包了,备个份,解压密码123
tomcat-catalina-jmx-remote-9.0.5 tomcat-catalina-jmx-remote-9.0.5.jar
Description Resource Path Location Type Missing artifact com.sun.jmx:jmxri:jar:1.2.1 pom.xml /eshop-storm line 2 Maven Dependency Problem
- **MBean Server**:MBean Server是JMX架构的核心,负责管理MBean的生命周期,包括创建、注册、查找、删除MBean,以及调用MBean的方法。 - **MBean操作和属性**:MBean的操作和属性定义了MBean的功能和状态。属性...
Java Management Extensions (JMX) 是Java平台上的一个标准技术...尽管描述中提到“介绍没用”,但了解JMX、JMS以及它们如何通过`jmxtools.jar` 和 `jmxri.jar` 实现是至关重要的,这对于理解和利用这些资源至关重要。
3. **执行操作**:使用JMX MBean路径查询特定的MBean,获取其属性值,或者调用MBean的操作方法。 4. **数据收集与展示**:在Zabbix中创建相应的监控项和图形,通过`cmdline-jmxclient`获取的数据作为指标源,展示在...
标签:agent-jmx-3.0.1-javadoc.jar,agent,jmx,3.0.1,javadoc,jar包下载,依赖包
jmx_exporter-1.0.1.tar.gz
`cmdline-jmxclient-0.10.3.jar.zip` 是一个用于Tomcat性能监控的工具包,其中包含 `cmdline-jmxclient-0.10.3.jar` 文件,这是一个Java档案(JAR)文件,专门设计用于通过命令行界面与Java管理扩展(JMX)接口交互...
Openfire源码 缺失的jar包- jetty-jmx-8.0.0.M2.jar 。还有其他jar包请查看
通过MBean和MBean服务器,JMX系统可以提供强大的配置管理、性能监控、日志记录和事件通知等功能。 JMX与SNMP(简单网络管理协议)相比,它们都是网络管理技术,但JMX更加适合于对Java应用程序的管理。JMX允许通过...
3. **操作MBean**: 通过MBean Server,我们可以调用MBean的方法,修改其属性,或者获取其状态信息。 4. **通知服务**: MBean Server支持订阅和发布通知,当MBean的状态发生改变时,可以向注册的监听器发送通知。 5...
当你在Maven项目中遇到"maven本地库缺少jmxri-1.2.1.jar包"的问题时,这意味着你的Maven仓库中没有这个特定版本的JMX运行时实现,因此编译或运行项目时可能会遇到错误。 解决这个问题有几种方法: 1. **使用Maven...