(转)用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 的访问量最大,服务器每秒的请求数,哪个搜索引擎正在抓取我们网站?面对这些问题 ...
随机推荐
- hdu 3507 Print Article(斜率优化DP)
题目链接:hdu 3507 Print Article 题意: 每个字有一个值,现在让你分成k段打印,每段打印需要消耗的值用那个公式计算,现在让你求最小值 题解: 设dp[i]表示前i个字符需要消耗的 ...
- 窗口、easyui-window、easyui-panel、easyui-linkbutton
//窗口 <script type="text/javascript" src="js/jquery.min.js"></script> ...
- NYOJ-1057 寻找最大数(三)(贪心)
寻找最大数(三) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的 ...
- 深入理解java回调机制
Callback的定义 一般在程序中执行回调函数是,是知道回调函数是预留给系统调用的,而且知道该函数的调用时机. 比如说android应用定义一个button对象,并给按钮添加一个监听事件," ...
- yii2.0 面包屑的使用
yii2中面包屑是yii2自带的小部件,类似本网站的导航栏应该就是采用面包屑来完成的 例子如下,需要引入 yii\widgets\Breadcrumbs echo Breadcrumbs::widge ...
- Sql Server 表创建以及Ef浅谈
1.在数据库中新建两张测试表 创建用户表 use eftest go if exists(select * from sysobjects where name='UserInfo') drop ta ...
- js行内式遇到的一些问题 DOM对象和jq对象转换的问题
这两天给后台页面做页面,我的工作比较简单,只需要写结构和样式就行了,写好之后,后端大哥用ajax重写页面加载数据,顺便给标签添加选中事件,做选中后变色的处理,但是却遇到一个问题,一直选不到触发事件这个 ...
- fido-uaf-protocol-v1.0
EXAMPLE 1: Policy matching either a FPS-, or Face Recognition-based Authenticator { "accepted&q ...
- Namenode写Journalnode超时,导致Namenode挂掉的问题
昨天还好好的集群,今天早上来看又挂掉了,还好是家里的测试服务器集群... 首先,查看了Namenode的状态,发现两台Namenode只剩下一台了,赶紧到挂了的那台去查看了logs下的日志: -- : ...
- ExtJS从入门到后面肯定要抛弃
一.ExtJs定义 ①基于JavaScript语言 ②基于JavaSwing的MVC架构 ③支持组件化.模块化设计 ④提供“本地数据源”的支持 ⑤完完善与服务端的交互机制 ⑥是最有可能拥有大规模可视化 ...