2025-05-23

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 default 1>$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 占用的內存情況。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *