注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

java中spring增加JMX 系统监控  

2012-12-11 17:36:28|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JMX

Java Management Extensions,Java管理扩展,初步看了些资料,以为是专门管理,监控jvm的一些信息的,特别是visual VM这个监控jvm的东西,还有一个添加JMX连接的时候(我自己想错了,那样的话应该叫jvm Management Extensions),其实他能使得基于java语言开发的程序能被管理,并且是可扩展的。


Jdk以前是通过JVMPI之类来监测Java程序运行中的jvm和系统的一系列情况,现在通过jmx就可以做到,这是通过java.lang.management 包来实现的,这个包是 JMX 在 JDK方面 的一个应用,并不是表示jmx就是一个监控jvm的东西。

 

我们可以用jmx来监控我们的系统,通过公布API的方式,但是,这里采用监控这个词,也是受了前面的例子的影响,实际上,个人觉得,就可以用jmx来开发我们的系统。

 

现在的jboss,hibernate,tomcat各种应用都号称实现了JMX规范,将可管理,可调用的MBean注册到MBeanServer中,通过一种类似“web服务”的方式公布出去,并且伴有一个名字,可以通过该名字找到该MBean。并且,这里的MBean是可以被管理的,说到这里又想到了OSGI。


参考:http://www.mengxiansheng.net/index.php/archives/66

jmx介绍:

http://en.wikipedia.org/wiki/Java_Management_Extensions 写道写道

Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e. g. printers) and service oriented networks. Those resources are represented by objects called MBeans (for Managed Bean). In the API, classes can be dynamically loaded and instantiated. Managing and monitoring applications can be designed and developed by Java Dynamic Management Kit.

JMX 1.0, 1.1 and 1.2 were defined by JSR 003[1] of the Java Community Process. As of 2006, JMX 2.0 is being developed under JSR 255.[2] The JMX Remote API 1.0 for remote management and monitoring is specified by JSR 160.[3] An extension of the JMX Remote API for Web Services is being developed under JSR 262.[4]

系统/应用/网站监控:

在开源的时代,只要你有足够的学习能力,完成一个系统/网站几乎不会存在技术难题,但对于系统的性能监控,重要功能性能指标的监控,数据库并发数量的监控等等问题同时也需要我们去实现。这时JMX就必须被提及了,开源架构配合JMX可以很容易的完成系统的监控功能。

更多jmx资源:

http://en.wikipedia.org/wiki/Java_Management_Extensions

http://www.oracle.com/technetwork/articles/javase/jmx-138825.html#1

 

体验JMX的强大之处:

      童鞋们是否使用过weblogic、websphere 、oracle as这样的商用服务器,如果使用过你一定对它的管理控制台的能力印象深刻,我们可以通过他们的管理控制台去监控JVM 堆栈的使用情况,可以执行JVM 垃圾回收,可以配置数据库连接池的参数且不用重启服务就可以生效,试想它们是如何实现这样强大的功能的?

 

  jmx,使用jmx可以很轻易的去监控系统中重要线程的运行情况,如数据缓冲池、自定义对象缓冲池的使用等等,并且可以去监控JVM虚拟机的运行情况,且可以远程调用jvm的垃圾回收。

 

jmx实战:

  现在主流的SSH框架已经深入人心,使用spring可以让jmx变的更加容易,将jmx融入我们的系统中可以让系统更加强健,更加具有可维护性,当系统发生故障时我们可以通过jmx远程查看主要功能的运行状况,以对系统故障做出客观的判断,这对后期维护很重要,下面的案例以spring+jmx 将项目运行在jetty上 为例(因为spring对jmx做了很好的整合,可以减少很多工作)。

 

1.spring 配置文件

Xml代码 
  1. <!--通过jmx实现对城市新闻实体对象缓冲池的监控、参数调整的功能,export 是将制定的bean暴漏给jmx,使其可以通过远程jconsole可以进行控制-->  
  2.     <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"  
  3.         lazy-init="false">  
  4.         <property name="beans">  
  5.             <map>  
  6.                 <entry key="bean:name=cityNewsPoolMbean" value-ref="cityNewsPoolMbean" />           
  7.             </map>  
  8.         </property>  
  9.     </bean>  
  10.     <!--可以让jconsole进行远程查看参数,修改参数bean对象,JikePoolMbean 是一个普通事java bean,里面是get**、set**方法-->  
  11.     <bean id="cityNewsPoolMbean" class="com.jike.mobile.JikePoolMbean">  
  12.         <constructor-arg index="0"  
  13.             type="org.apache.commons.pool.impl.GenericObjectPool" ref="cityNewsClientObjectPool"/>  
  14.     </bean>  

  2.简单的测试项目完成后,将项目部署到jetty,启动jetty

到 JETTY_HOME 目录下,运行下面命令(在ubuntu下,上jetty后台运行):

nohup java -server -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=7080  -Dcom.sun.management.jmxremote -Xms1024m  -jar start.jar>start.out 2>&1 &
上面的命令启动7080为JMX的监控端口,同时加入了jvm时的其他参数,可根据个人需求对参数进行增减。
使用sudo netstat -nlp|grep 7080 命令查看 是否启动成功

3.使用本机jconsole监控JVM,调整系统参数配置

   在windows下运行 JAVA_HOME/bin/jconsole.exe ,创建一个远程连接,连接端口是7080,就会看到远程服务器JVM的内存信息,线程信息及cpu使用情况等
   或者使用java visualvm ,运行 visualvm后添加 jconsole等插件即可,具体操作可以google一下。
  评论这张
 
阅读(1057)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016