(转)用JMX监测JVM的运行参数
翻译自http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
用JMX管理你的JVM
JMX是Java管理扩展的缩写,也是当前Java技术中很核心的一块,JMX使得构建可扩展、可管理、伸缩性好的Java框架变得更加容易。更重要的是,JMX是J2SE的一部分,也就是说,使用JMX还能获得很好的兼容性,因为它是标准Java的一部分
说了这些,也许你对JMX的重要性还是没有很直观的认识,那么当你知道最普及的servlet容器tomcat、大名鼎鼎的开源服务器JBOSS,都是完全基于JMX的,甚至连大部分商用的应用服务器如weblogic,都采用JMX作为其管理平台的实现时,你还会怀疑JMX的重要性吗。还是半信半疑?OK,就连与你朝夕相处的JVM,都是基于JMX架构的!本文就是介绍关于如何用JMX对你的JVM进行管理
1.设置环境变量
可以在命令行以java -Dproperty=value的形式设置环境变量,不过这样只会对当前命令行窗口有效;或者修改操作系统的环境变量
在以前的Java中,要想利用JMX管理某个JVM应用,必须加上com.sun.management.jmxremote这个系统变量,以告之JVM开放特定端口和协议用于管理。但是Java6已经默认支持JMX了,也就是说:
在过去的Java版本中,假设你要运行Notepad这个程序,必须这么做:
% cd JDK_HOME/demo/jfc/Notepad
% java -Dcom.sun.management.jmxremote -jar Notepad.jar
而在Java6中,只需敲入% java -jar Notepad.jar 即可,接下来任意JMX兼容的客户端都可以连接到这个应用进行管理,实现所谓的out-of-the-box管理。(在Windows系统中,出于安全原因,如果要进行本地的监控与管理,你的临时文件夹目录必须是NTFS格式的,否则不能提供足够的访问控制)
2.运行jconsole
这是一个默认的JMX管理客户端实现,直接在命令行敲入jconsole即可。jconsole用作相关的调试很方便,但是不适合作为商用,因为这东西本身比较占资源
3.在jconsole里面就能看到刚刚运行的Notepad了,双击连接即可,连接后可以看到该程序运行的各项性能参数
Ok了,就这么多?非也,以上只是针对本地监视和管理的,也就是在一台机器上运行监控程序和被监控程序,如果是远程呢,jconsole不在本机呢?那就比较麻烦一些了
1.远程的话,首先在运行某个Java程序前,必须加上一些变量参数:com.sun.management.jmxremote.port=portNum
portNum指代RMI连接的端口号。同时,远程连接必须提供安全保证,所以默认使用基于SSL和TLS的密码认证
2.设置密码(单用户)
将JRE_HOME/lib/management目录的jmxremote.password.template文件改名为jmxremote.password,修改文件的访问权限,只有管理员才能读写。然后给不同角色设置密码,默认已经有两个角色 monitorRole 和controlRole
3.设置密码(多用户)
将JRE_HOME/lib/management目录的jmxremote.password.template文件拷贝到JRE根目录并改名为jmxremote.password;同样修改权限、设置密码;然后按以下参数启动JVM:com.sun.management.jmxremote.password.file=pwFilePath
其中,pwFilePath是密码文件的路径
4.用jconsole连接
如果不用SSL,那么直接输入:jconsole hostName:portNum
如果使用SSL,就要加上参数:% java -Djavax.net.ssl.keyStore=keystore -Djavax.net.ssl.keyStorePassword=password Server
这只是验证了服务器端而已,如果还要验证SSL客户端,也要设置类似的值,详细设置可以参考:http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CustomizingStores
我们继续深入讨论一下刚才说到的密码验证。JMX提供了两个文件进行密码和访问控制,一个是刚才提到的jmxremote.password文件,用于设置角色密码;另一个jmxremote.access 是访问控制文件,定义了每个角色的读写的权限
密码文件示例:
# The "monitorRole" role has password "QED".
# The "controlRole" role has password "R&D".
monitorRole QED
controlRole R&D
access文件示例:
# o The "monitorRole" role has readonly access.
# o The "controlRole" role has readwrite access.
monitorRole readonly
controlRole readwrite
监测和管理相关的系统属性
之前已经提到了一些属性和含义,但是我们是在命令行下设置它们的,为了不每次都这么做,JMX提供了一个属性文件,即JRE_HOME/lib/management/management.properties,文件里面以注释形式提供了所有属性的含义和用法。
(转)用JMX监测JVM的运行参数的更多相关文章
- jvm的运行参数
1.我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负 ...
- JVM 运行参数 & 代码监控
1.Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的. packag ...
- IntelliJ IDEA设置JVM运行参数
2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...
- idea设置JVM运行参数
对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...
- 【转】idea设置JVM运行参数
对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...
- IntelliJ IDEA和Eclipse设置JVM运行参数
打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置: 32 位:idea.exe.vmoptions64 位:idea64.exe.v ...
- JVM调优系列:(五)JVM常用调试参数和工具
转自:http://blog.csdn.net/opensure/article/details/46715769 JVM常用调试参数: –verbose:gc在虚拟机发生内存回收时在输出设备显示信息 ...
- ZooKeeper服务器是用Java创建的,它在JVM上运行。
ZooKeeper服务器是用Java创建的,它在JVM上运行. 创建配置文件 使用命令 vi conf/zoo.cfg 和所有以下参数设置为起点,打开名为 conf/zoo.cfg 的配置文件. $ ...
- apachetop 实时监测web服务器运行状况
apachetop 实时监测web服务器运行状况 我们经常会需要知道服务器的实时监测服务器的运行状况,比如哪些 URL 的访问量最大,服务器每秒的请求数,哪个搜索引擎正在抓取我们网站?面对这些问题 ...
随机推荐
- wpf xmal基础
1.名称空间的引用 比如想使用System.Windows.Controls名称空间 首先需要把改名称空间所在的程序集presentationFramework.dll引用到项目里 然后在根元素的起始 ...
- Gulp安装使用教程
题记:为什么要使用gulp,网上有很多关于gulp的优势,而在我看来,这些都是工具的优势!工具的优势最主要体现在易用性上,听说gulp比grunt更易用,所以这里写个文档记录. 同样要保证nodejs ...
- django 安装记录
1. 下载django安装包,下载个最新的安装包即可. https://www.djangoproject.com/download/ 2. 在本地解压 tar -xvf 安装包名称 3. 安装 ...
- Zabbix 监控rabbitmq
一 应用场景描述 测试环境业务 OpenStack中搭建了rabbitmq作为RPC消息队列,所以mq起到了很重要的角色,本案例是来如何使用zabbix监控 rabbitmq业务 二 Rabbitmq ...
- Linux之top
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- 在eclipse中生成实体类
1.在eclipse的windows中选中preferences在查询框中输入driver definition 2.点击add在Name/type中选中mysql jdbc driver 5.1然后 ...
- ubuntu 14.04 opencv2.4.13 安装
1.下载然后解压安装压缩包 unzip opencv-2.4.13.zip 2. 进入刚解压的文件夹,建立release文件夹 cd opencv-2.4.13 mkdir release 3. 安装 ...
- Android(对话框)
一.消息对话框 所谓的消息对话框,就是说当你点击按钮弹框,它会弹出一个消息提示你,消息对话框有相应的确定.取消.其他按钮,比如下方: 代码: //消息提示框 public void testOne(V ...
- Xssf配合metaspolit使用
安装xssf download: svn export http://xssf.googlecode.com/svn/trunk /home/User/xssf install: svn expor ...
- iOS开发下架在AppStore中销售的app
1.登陆开发者账号 2.选择itunes connect 选择我的app 3.选择要下架的app 4.价格与销售范围 5.销售范围 6.点击存储 //如果想要重新在AppStore中进行销售只需要选择 ...