用法: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. 密码加SALT原理

    原来这个技术叫SALT,以前我们经常这么用 ============================================================================== ...

  2. jquery 上传图片即时预览功能

    <script type="text/javascript">        jQuery.fn.extend({            uploadPreview: ...

  3. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  4. Git-windows安装包

    下载地址 http://192.168.168.230/sw-search-sp/soft/4e/30195/Git-2.7.2-32-bit_setup.1457942412.exe 来自为知笔记( ...

  5. [第三方]SCNetworkReachability 获取网络状态控件使用方法

    用Cocoa Pods导入控件以后 直接导头文件 复制以下代码 [SCNetworkReachability host:@"github.com" reachabilityStat ...

  6. Windows下批处理执行MySQL脚本文件

    转载至http://my.oschina.net/u/660932/blog/117929 一. @echo offSetlocal enabledelayedexpansion::CODER BY ...

  7. HDU 5879 Cure -2016 ICPC 青岛赛区网络赛

    题目链接 题意:给定一个数n,求1到n中的每一项的平方分之一的累加和. 题解:题目没有给数据范围,而实际上n很大很大超过long long.因为题目只要求输出五位小数,我们发现当数大到一定程度时值是固 ...

  8. July 5th, Week 28th Tuesday, 2016

    If you smile when no one else is around, you really mean it. 独处的时候你的笑容才是发自内心的笑容. Human beings are so ...

  9. iOS开发系列--Objective-C 之 KVC、KVO

    概述 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC).键值监听( ...

  10. 求sqrt()底层效率问题(二分/牛顿迭代)

    偶然看见一段求根的神代码,于是就有了这篇博客: 对于求根问题,通常我们可以调用sqrt库函数,不过知其然需知其所以然,我们看一下求根的方法: 比较简单方法就是二分咯: 代码: #include< ...