翻译自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的运行参数的更多相关文章

  1. jvm的运行参数

    1.我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负 ...

  2. JVM 运行参数 & 代码监控

    1.Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的. packag ...

  3. IntelliJ IDEA设置JVM运行参数

    2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...

  4. idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  5. 【转】idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  6. IntelliJ IDEA和Eclipse设置JVM运行参数

    打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置: 32 位:idea.exe.vmoptions64 位:idea64.exe.v ...

  7. JVM调优系列:(五)JVM常用调试参数和工具

    转自:http://blog.csdn.net/opensure/article/details/46715769 JVM常用调试参数: –verbose:gc在虚拟机发生内存回收时在输出设备显示信息 ...

  8. ZooKeeper服务器是用Java创建的,它在JVM上运行。

    ZooKeeper服务器是用Java创建的,它在JVM上运行. 创建配置文件 使用命令 vi conf/zoo.cfg 和所有以下参数设置为起点,打开名为 conf/zoo.cfg 的配置文件. $ ...

  9. apachetop 实时监测web服务器运行状况

    apachetop 实时监测web服务器运行状况   我们经常会需要知道服务器的实时监测服务器的运行状况,比如哪些 URL 的访问量最大,服务器每秒的请求数,哪个搜索引擎正在抓取我们网站?面对这些问题 ...

随机推荐

  1. hdu 3507 Print Article(斜率优化DP)

    题目链接:hdu 3507 Print Article 题意: 每个字有一个值,现在让你分成k段打印,每段打印需要消耗的值用那个公式计算,现在让你求最小值 题解: 设dp[i]表示前i个字符需要消耗的 ...

  2. 1、<img />标签

    alt:当图片不显示时的文字说明 title:鼠标悬停在图片上的出现的文字说明

  3. redisTemplate keys方法 为空

    我遇到的原因是spring.xml配置有问题,应该为: <bean id="redisTemplate" class="org.springframework.da ...

  4. 原 iOS深入学习(Block全面分析)http://my.oschina.net/leejan97/blog/268536

    原 iOS深入学习(Block全面分析) 发表于1年前(2014-05-24 16:45)   阅读(26949) | 评论(14) 39人收藏此文章, 我要收藏 赞21 12月12日北京OSC源创会 ...

  5. VC6.0 通过崩溃地址中找到异常代码行

    来源:http://blog.csdn.net/mydeardingxiaoli/article/details/20371585 这是从“VC编程经验总结7”中转出来的借花献佛——如何通过崩溃地址找 ...

  6. Math 对象 识记

    Math 对象用于执行数学任务. 1.使用 Math 的属性和方法的语法: var pi_value=Math.PI; var sqrt_value=Math.sqrt(15); 注释:Math 对象 ...

  7. 大型网站技术架构 核心原理与案例分析 pdf

    需要的小伙伴拿去,哈哈.百度云链接:https://pan.baidu.com/s/1hsuiM3q

  8. python多进程,以及进程池并发

    模拟多进程 #!/usr/bin/env python#-*- coding:utf-8 -*-import timefrom multiprocessing import Process def s ...

  9. [转]cmd-bat批处理命令延时方法

    批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 @echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二:vbs s ...

  10. linux强制svn提交时必须写注释

    打开hooks,然后将pre-commit.tmpl修改为pre-commit,打开pre-commit,写入如下代码: #!/bin/sh REPOS="$1" TXN=&quo ...