用法:Jvisualvm是JDK自带的一款性能分析工具

使用方式:

1.配置好JDK环境变量

1.本地JVM监控略

2.远程JVM监控

用JMX对Resin内存状态进行监控 ,可以看到本地所有可监控的JVM实例。

原理就是通过添加一些JMX相关的JVM启动参数来控制JMX的行为,例如端口,验证信息等。Resin3.1.X版本的配置文件中有一些设置JVM args的配置项目,可以直接在里面修改。

Resin配置不使用认证的方式连接远程的服务器:

步骤如下:

1.修改远程服务器的resin.conf或者resin.xml文件,对于jvm参数配置这节添加或更改如下内容

<jvm-arg>-Dcom.sun.management.jmxremote.port=9999</jvm-arg>  

<jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>  

<jvm-arg>-Dcom.sun.management.jmxremote.authenticate=false</jvm-arg>  

<jvm-arg>-Djava.rmi.server.hostname=192.168.1.144</jvm-arg> 

注意红色部分,authenticate=false是关闭授权,hostname和port都是你连接必须的指定的IP和端口。

 经过以上配置后你就可以在远程机器上用IP和端口9999进行远程Resin实例的监控了,记住防火墙要开放相应端口的访问。

注意:以上方法不只限于Resin,参数作用的是JVM,对任意JAVA程序都是适用的,举例如:

java -Xdebug -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.port=10000 -Djava.rmi.server.hostname=192.169.100.159

原始resin.xml

配置安全验证:

设置步骤:

jmxremote.password,权限设置错误,就会导致连接不上

2.修改jmxremote.access文件

3.修改jmxremote.password 添加内容:

jmxremote.access文件主要创建用户和设置用户权限

jmxremote.password文件设置用户密码

参数配置:

<jvm-arg>-Dcom.sun.management.jmxremote.port=9999</jvm-arg>

<jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.authenticate=true</jvm-arg>

<jvm-arg>-Djava.rmi.server.hostname=192.168.1.144</jvm-arg> 

<jvm-arg>-Dcom.sun.management.jmxremote.access.file=$JAVA_HOME/jre/lib/management/jmxremote.access</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.password</jvm-arg>

$JAVA_HOME是你的环境变量的值,建议你将Java安装目录下面jre/lib/management/jmxremote.password.template这个文件拷贝一份,另存一个文件名,将文件中的用户名密码这一项前的注释取消并且更换为自己的用户名和密码。也可以将$JAVA_HOME/jre/lib/management下有jmxremote.access和jmxremote.password的两个文件复制到$TOMCAT_HOME/tomcat/bin目录下

主机JVM CPU与JVM内存图

类加载与线程

此工具也可以手工执行垃圾回收和堆快照Dump

安装插件:

查看Visual GC插件:

配置方法:

1.在$JAVA_HOME/bin目录下新建jstatd.all.policy文件

2.在文件里穿件如下内容:

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

3.给jstatd.all.policy授予执行的权限:chmod 777 jstatd.all.policy

4.在当前目录下,执行:jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.144 &

或者

jstatd -J-Djava.rmi.server.hostname=192.168.1.169 -J-Djava.security.policy=/usr/local/java/jdk1.6.0_45/bin/jstatd.all.policy

5.添加jstatd连接

注意:在JMX创建的连接,无法查看Visual GC,但是可以重启或者用用户名认证在查看却可以

其他插件:

Jconsole配置:

jdk1.7需要下载Jtop.jar包才能展示

加载D:\Java\jdk1.7.0_80\demo\management\JTop下的包

这个包需要自己下载,或者在jdk-6u20-windows-x64.exe版本安装完成后就存在,拷贝到jdk.1.7即可

环境:

centos6,tomcat7,jdk1.7

解决方案:
1,在服务器上找到catalina.sh文件,在该文件的这一行
# ----- Execute The Requested Command -----------------------------------------

上面添加以下内容:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.2 -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managem
ent.jmxremote.authenticate=false"
然后启动tomcat进程

Tomcat上的配置参数:

catalina.sh用于修改linux的jmx。具体修改方 法是一样的。
在 rem ----- Execute The Requested Command --------------------------------------- 
加入: 
set JAVA_OPTS=-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=8050 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=true 
-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access 
-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password

如果同样遇到提示 必须限制口令文件的读取权限 
或者: 
set JAVA_OPTS=-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=8050 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access 
-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password

Jvisualvm监控配置:

1、jboss启动脚本(如果是liunx则在环境变量JAVA_OPTS)中,jvm参数添加如下内容:
 -Djava.rmi.server.hostname= #指定rmi地址,为jboss所在机器ip
 -Dcom.sun.management.jmxremote.port= #指定jmx端口
 -Dcom.sun.management.jmxremote.ssl=false #是否使用ssl安全连接
 -Dcom.sun.management.jmxremote.authenticate=false #是否需要验证

2、打开本地命令窗口,进入$JAVA_HOME/bin目录,输入Jvisualvm.exe回车
  打开Jvisualvm登陆界面,输入:
  a、service:jmx:rmi:///jndi/rmi://10.25.7.27:9999/jmxrmi
  (b、用户名c、密码)
  登录就OK了
3、第二步中如果配置了验证则输入用户名密码,否则有没有输入都无关紧要
  添加验证步骤如下:
  a、$JAVA_HOME/jre/lib/management/jmxremote.password.template 密码示例文件
  b、$JAVA_HOME/jre/lib/management/jmxremote.access 用户定义文件
  (1)复制密码文件到自定义目录,去掉密码文件中monitorRole前边的#(去掉注释)
  (2)chmod 600 (密码文件)    修改为只有当前登录用户能修改和阅读该密码文件
  (3)启动脚本中添加或者修改:
  -Dcom.sun.management.jmxremote.authenticate=true
  -Dcom.sun.management.jmxremote.password.file=$JBOSS_HOME/jmxremote.password
  c、重启即可
  
注:
1、环境变量示例:
JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=256m  -XX:MaxPermSize=256m -Dfile.encoding=UTF8  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=true  -Dcom.sun.management.jmxremote.password.file=$JBOSS_HOME/jmxremote.password"

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m
-Dfile.encoding=UTF8 -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=$JBOSS_HOME/jmxremote.password"

配置认证登陆:

配置java认证文件:

修改配置文件:

1.jmxremote.access

2.jmxremote.password

3.修改jmxremote.password文件的权限,设置为只有owner可读,chmod 600 jmxremote.password,权限设置错误,就会导致连接不上

4.连接:

可以看到java的所有进程:

http://blog.csdn.net/zczzsq/article/details/11660761

JVM性能监控工具-Jvisualvm的更多相关文章

  1. JVM性能监控工具(一)-jdk命令行工具

    转载:http://blog.csdn.net/top_code/article/details/51456186 当系统出bug需要定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处 ...

  2. 深入理解JVM—性能监控工具

    (转自:http://yhjhappy234.blog.163.com/blog/static/31632832201222691738865/) 我们知道,在JVM编译期和加载器,甚至运行期已经做了 ...

  3. JVM内存监控工具 Jvisualvm

    这个工具是官方提供的,直接在JDK工具包下的bin目录找找就可以找到,或者打开cmd直接输入"jvisualvm"即可打开该工具(配置好java环境变量). 需要在catalina ...

  4. jvm性能监控工具

    jvm可能存在的问题:    OutOfMemoryError:内存不足    内存泄露    线程死锁    锁竞争(Lock Contention)    Java消耗过多的CPU 一.jps(j ...

  5. Tomcat 性能监控工具jvisualvm, JConsole

    配置: 重启Tomcat

  6. java堆栈信息查看,以及JVM性能查看工具-jconsole+jmap

    java-core  P487 P515 chapter11,主要讲java的异常,里面很多内容收获良多,之前一直没注意过的. 一,Throwable类获得StackTraceElement ,可进行 ...

  7. JVM内核-原理、诊断与优化学习笔记(七):性能监控工具

    文章目录 系统性能监控 系统性能监控- linux uptime top vmstat(虚拟内存统计) pidstat 系统性能监控 - windows 任务管理器 Perfmon Process E ...

  8. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

    摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...

  9. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解(转VIII)

    JVM本身就是一个java进程,一个java程序运行在一个jvm进程中.多个java程序同时运行就会有多个jvm进程.一个jvm进程有多个线程至少有一个gc线程和一个用户线程. JDK本身提供了很多方 ...

随机推荐

  1. 【python】lxml中多个xml采用相同节点时出现的问题

    今天突然发现了一个lxml的坑. 假设我们有一个节点 <id>123</id> 有两个父节点都要用上述节点,则必须把上面的节点写两遍!用同一个会出错! 出错例子: #!/usr ...

  2. 使用WKWebView替换UIWebView

    开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载.这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难.如果加载网页多,还可能因为过量占 ...

  3. Linux 添加新硬盘 LVM操作(作用:新增硬盘的卷管理)

    1 查看当前系统硬盘及分区情况 (注:linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2 初始化分区sdb为物理卷pv pvcreate /dev/sdb  / ...

  4. C#文件夹和文件操作

    File.Exist(string path)//文件读写FileStream fs=new FileStream(filename, FileMode.Create);BinaryWriter bw ...

  5. [Android Pro] AES加密

    reference to :http://blog.csdn.net/wfung_kwok/article/details/7766427 package com.secufity.aes; impo ...

  6. October 3rd 2016 Week 41st Monday

    Better to light one candle than to curse the darkness. 与其诅咒黑暗,不如燃起蜡烛. Sitting in the darkness and wa ...

  7. jquery.validation.js 表单验证

    jquery.validation.js 表单验证   官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuer ...

  8. Git命令之上传与同步

    操作步骤,可参考:http://blog.csdn.net/chenyufeng1991/article/details/47299461. 1.在本地仓库中,即项目目录下创建文件,如: 2.查看当前 ...

  9. IPv6地址介绍

    IPv6地址介绍 2008 年 04 月 10 日 1. 认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示:而IPv6 ...

  10. LeetCode : 223. Rectangle Area

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABRQAAAQ0CAYAAAAPPZBqAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw