用法:Jvisualvm是JDK自帶的一款性能分析工具java
使用方式:linux
1.配置好JDK環境變量windows
1.本地JVM監控略centos
2.遠程JVM監控tomcat
用JMX對Resin內存狀態進行監控 ,能夠看到本地全部可監控的JVM實例。安全
原理就是經過添加一些JMX相關的JVM啓動參數來控制JMX的行爲,例如端口,驗證信息等。Resin3.1.X版本的配置文件中有一些設置JVM args的配置項目,能夠直接在裏面修改。
服務器
Resin配置不使用認證的方式鏈接遠程的服務器:jvm
步驟以下:工具
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
配置安全驗證:
設置步驟:
1.修改jmxremote.password文件的權限,設置爲只有owner可讀,chmod 600 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監控配置:
一、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 #是否須要驗證
二、打開本地命令窗口,進入$JAVA_HOME/bin目錄,輸入Jvisualvm.exe回車
打開Jvisualvm登錄界面,輸入:
a、service:jmx:rmi:///jndi/rmi://10.25.7.27:9999/jmxrmi
(b、用戶名c、密碼)
登陸就OK了
三、第二步中若是配置了驗證則輸入用戶名密碼,不然有沒有輸入都可有可無
添加驗證步驟以下:
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、重啓便可
注:
一、環境變量示例:
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