用法: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. MongoDB 查询优化分析

    摘要: 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的写操 ...

  2. 警告: 程序集绑定日志记录被关闭(IIS7 64位系统)

    部署一个.NET程序在IIS7服务器,出现如下信息: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: S ...

  3. [NSURLSession/Delegate]用Post方式获取网络数据并把数据显示到表格

    #pragma mark 实现NSURLSessionDataDelegate代理 @interface ViewController ()<UITableViewDataSource,UITa ...

  4. WinForm轻松实现自定义分页 (转载)

    转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011315114240140/ 以前都是做web开发,最近接触了下WinForm, ...

  5. HDU 4314 Save the dwarfs (DP) ---转载

    题目:传送门. 这个是DP,比赛的时候用贪心写了好久没写出来. 题意: 有n个矮人被困在深度为h的井中,每个矮人都ai(脚到肩膀的高度)和bi(手臂长度), 当存在a1 + a2 + ... + ak ...

  6. Hibernate基本CRUD

    1 hibernate 框架介绍 冬眠:开发的代码基本不变. 1.1回顾jdbc Java提供的标准的数据访问的API 作用:完成应用程序java程序中的数据和db中的数据进行交换. 工作过程: A ...

  7. HttpClient 3.X 4.3 4.x超时设置

    HttpClient 4.3.HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样, 3.X是这样的 ...

  8. kmp

    #include <bits/stdc++.h> #define MAXN 100000 using namespace std; string a, b; int next[MAXN]; ...

  9. 优化MyBatis配置文件中的配置

    一.为实体类定义别名,简化sql映射xml文件中的引用 之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(包名+类名),如下: <!-- 创建用户(Create) --& ...

  10. Android之WebView学习

    WebView常用方法 WebSettings 在使用WebView前我们都要进行相关的配置,常见的操作如下: WebSettings settings = mWebView.getSettings( ...