遠程監視jboss應用java內存的配置(實測)

前言

       因爲最近一個項目部署在客戶那邊運行一個月左右就會出現java內存溢出的問題,爲了時時監控java內存的情況需要,需要遠程查看服務器上java內存的一些情況。在公司模擬部署了遠程監視linux下項目運行的情況。

 

一、簡單介紹兩個jdk1.6自帶的可視化監視工具
    Jconsole:Java 6.x採用JMX方式提供了一系列監視和管理虛擬機的API,隨SDK一起發佈的JConsole則是採用這些API實現監控虛擬機的使用工具。 JConsole能夠提供被監控虛擬機的內存、線程、類的加載以及MBean等信息,從而能夠對服務器的運行情況進行實時監控。

   JVisualVM: 是Netbeans的profile子項目,已在JDK6.0 update 7 中自帶(java啓動時不需要特定參數,監控工具在bin/jvisualvm.exe),能夠監控線程,內存情況,查看方法的CPU時間和內存中的對 象,已被GC的對象,反向查看分配的堆棧(如100個String對象分別由哪幾個對象分配出來的)。

 

二,如果是win系列的電腦查看本機的內存情況,直接找到jdk的安裝路徑雙擊上面提到的可視化監視工具即可

 

三,如果是想監視遠程的java內存的情況可要做一些相應的配置

  1.   運行環境
                  服務器:Redhat6.0 + JDK 1.6+ Jboss 5.1 
                  ip地址:192.168.1.250
                  客戶機:Windows + JDK 1.6

 

        2.   不帶用戶名密碼的參數配置(很簡單),只需要修改jboss中bin下的run.sh。在該句下邊添加上紅色字跡的部分即可

                JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.port=9999"   
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.authenticate=false"   
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.ssl=false"   
                JAVA_OPTS="$JAVA_OPTS   -Djava.rmi.server.hostname=192.168.1.250"

 

                 注意:
              
   1、9999表示監控的端口號,確保指定的端口不被佔用;
                 2、可以採用netstat -an來查看已經佔用的端口;
                 3、配合lsof -i:portnum 來查看佔用端口的具體應用程序;
                 4、另外如果開啓了防火牆服務,請確保端口能夠透過防火牆訪問;

                 5、192.168.1.250爲當前服務器的IP;

 

       3.   啓動JBoss服務器


               ./run.sh -b 192.168.1.250  & 必須通過-b參數指定Jboss服務器綁定的地址;
               允許所有用戶連接 則爲 -b 0.0.0.0

 

        4,    連接遠程虛擬機

               啓動本機%JAVA_HOME%\bin目錄下的JConsole,
               在彈出對話框的“遠程進程:”一欄中,輸入192.168.1.250:9999,然後點擊“連接”,如下圖所示:

               

 

               附加:帶用戶名密碼的參數配置 

                     一,修改jboss中bin下的run.sh。在該句下邊添加上紅色字跡的部分

                         JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.port=9999"  
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.authenticate=true"  
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.ssl=false"   
                         JAVA_OPTS="$JAVA_OPTS   -Djava.rmi.server.hostname=192.168.1.250"
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.password.file=/usr/java/jdk1.6/jre/lib/management/jmxremote.password"

                       

                          注意 $JAVA_HOME/jre/lib/management/jmxremote.password  中 jmxremote.password是由原來的jmxremote.password.template複製一份得到,

                         去掉 monitorRole  QED前面的#   如果不做修改  登入的用戶名:monitorRole 密碼:QED   (可根據需要修改用戶名密碼,但是如果做修改也要同

                          是修改jmxremote.access中的相對應名字的權限

                     二,如果啓動過程中出現這個問題或者錯誤

                        

                       則是因爲jmxremote.password 的權限問題   在該文件路徑下執行:chmod  600 jmxremote.password 

                      重新按照3啓動項目即可。

 

 四,對於JVisualVM而言在  樹結構的  Remote中添加遠程ip,然後右鍵該ip添加JMX鏈接添加上端口號和用戶名密碼即可鏈接成功,如圖所示:

               


 


 

                         

             

 

發佈了22 篇原創文章 · 獲贊 6 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章