1. 程式人生 > >使用JProfiler監控JBoss執行情況

使用JProfiler監控JBoss執行情況

JProfiler 是一個著名的用於 java 系統監控分析的軟體,功能很強大,可以監控普通的 java application, applet, java web start, application server 等等。除了可以監控本地的程式,還可以對遠端伺服器上跑的應用進行監控。本文以 JBoss 為例,對 JProfiler 的安裝、配置和使用做個簡單介紹。

    先說一下環境:

   伺服器:RedHat Linux 3.4.3-9.EL4(核心版本 2.6.9-5.ELsmp),JBoss 4.0.3,Sun JDK 1.5.0_08,JProfiler 4.3.2 for linux(安裝包:jprofiler_linux_4_3_2.sh)
    客戶端:Windows XP,JProfiler 4.3.2 for windows(安裝包:jprofiler_windows_4_3_2.exe)
    客戶端 JProfiler 安裝:直接執行安裝程式即可,沒啥可說的。有一點就是安裝過程中,norton 曾經報警,不理他,安完之後也沒發現有什麼問題
    伺服器端 JProfiler 安裝:把 jprofiler_linux_4.3.2.sh 上傳到到伺服器,假設路徑為 /opt/jprofiler4 (後文用 $JPROFILER_HOME指代)。用如下命令:
# cd /opt/jprofiler4 # chmod +x *.sh # ./jprofiler_linux_4.3.2.sh -c     按照提示來安裝,提示都很簡單,不在多說。安裝路徑選擇 $JPROFILER_HOME 。注意,這裡的 -c 意思是用字元方式來安裝,如果機器上沒有 X 則加上該引數。

    伺服器端的配置:

    1. 修改系統配置,在 LD_LIBRARY_PATH 里加入 JProfiler 的庫檔案所在路徑 $JPROFILER_HOME/bin/linux-x86 ,如果是 64 位伺服器,則選擇 $JPROFILER_HOME/bin/linux-x64。
    2. 修改 JBoss 的啟動指令碼,加入如下引數:
-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:$JPROFILER_HOME/bin/agent.jar

    例如:$JAVA_HOME
/bin/java $JAVA_OPTS -agentlib:jprofilerti=port=8849-Xbootclasspath/a:/opt/jprofiler-4.3.2/bin/agent.jar -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS"-Djava.library.path=$JBOSS_HOME/server/default/lib -classpath "$JBOSS_CLASSPATH" org.jboss.Main -c default1>$JBOSS_CONSOLE 2>&1</dev/null&     8849 是預設的埠號

    3. 重新 login linux ,啟動 jboss 。檢視一下 $JBOSS_HOME/server/default/log/server.log ,可以看到 JBoss 並未啟動,原因是上邊的配置選擇的啟動模式,只有當一個 JProfiler GUI(指 Windows XP 下安裝的 jprofiler )的監聽請求發過來時候,JProfiler才會真正的啟動被監控的應用程式也就是 JBoss 。另外有一種啟動模式與此不同,它可以直接啟動被監控的應用程式而不必等待。這種配置稍微麻煩一點,以後在說。

    客戶端的配置和使用:

    1. 執行 JProfiler 。第一次開啟會有嚮導,忽略它。
    2. 選擇 Session->Integration Wizard->New Remote Integratation
    3. 選擇 On a remote computer;Platform of remote computer 選擇 Linux x86/AMD 64;Next
    4. 輸入伺服器 IP ;Next
    5. 輸入伺服器上的 jprofiler 的安裝路徑,如 /opt/jprofiler4 ;next
    6. 選擇伺服器的 JDK 環境,這裡是:Sun,1.5.0,hotspot;next
    7. 輸入埠:這裡是預設值 8849;next
    8. 選擇啟動模式:這裡選第一種 wait for a connection from the jprofiler GUI;next
    9. 這裡會列出需要在伺服器端做的配置。上一步“伺服器端的配置”我們已經做過了。如果在第 8 步選擇了第二種啟動方式 Don't wiat, start immediately ,這裡也會列出相應的伺服器端配置方法,可以參考。next
    10. Finish

    此時 session 會被啟動。在 profiling settings 對話方塊裡,不用做任何修改,ok 即可。此時 session 被啟動。觀察一下伺服器,發現 JBoss 也啟動了。這時就可以在客戶端看到 jboss 的執行情況,比如
記憶體
的佔用等等。

    我用 jprofiler 主要是監控記憶體佔用情況看是否有 member leak 。點左側的 “VM Telemetry Views”可以看到 jboss 佔用的記憶體情況。