jvm監控環境搭建

VisualVM是Sun的一個OpenJDK項目,其目的在於爲Java應用創建一個整套的問題解決工具。它集成了多個JDK命令工具的一個可視化工具,它主要用來監控JVM的運行情況,可以用它來查看和瀏覽Heap Dump、Thread Dump、內存對象實例情況、GC執行情況、CPU消耗以及類的裝載情況。 Java開發人員可以使用 VisualVM創建必要信息的日誌,系統管理人員可用來監控及控制Java應用程序在網絡中的運行狀況。 

使用visual vm遠程監控tomcat運行情況,需要對tomcat主機設置如下:

1. 通過jstatd啓動RMI服務
        配置java安全訪問,將如下的代碼存爲文件 jstatd.all.policy,放到JAVA_HOME/bin中,其內容如下,
        grant codebase "file:${java.home}/../lib/tools.jar" {

               permission java.security.AllPermission;

          };

2、給文件增加可執行權限chmod +x tomcat

3、執行命令jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.2.83 &

     因爲是守護進程,需要在最後增加 &符號

     注意IP需要替換爲實際的IP

4、visual vm新增監控主機


主機名添加已經開啓jstatd監控的ip,

可以看到2.83已經監控了三個tomcat,通過pid可以瞭解到是哪個應用。

內存佔用分析工具

mat.zip

常見問題解決:

1、啓動jstat進程報如下錯誤:

     

[tomcat@localhost ~]$ Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.System.setProperty(System.java:783)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

     是由於先啓動遠程visual vm監控,再啓動jstat導致。關閉visual vm,即可啓動成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章