<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-1  評論-68  文章-98  trackbacks-0

    JProfiler 解決 Java 服務(wù)器的性能跟蹤

    ?

    作者:徐建祥(netpirate@gmail.com

    時間: 2006/01/05

    來自:http://www.anymobile.org
    ?

    1、摘要..........................................................................1
    2、改善服務(wù)器的性能...........................................................1
    3、分析器原理...................................................................2
    4、JProfiler 簡介...............................................................2
    5、JProfiler 特征...............................................................3
    6、本地監(jiān)控.....................................................................4
    7、遠程監(jiān)控.....................................................................7
    8、參考..........................................................................9

    ?

    1 、 摘要

    ???? ? 改善 Java 服務(wù)器的性能需要模擬負載下的服務(wù)器。創(chuàng)建一個模擬環(huán)境、搜集數(shù)據(jù)并且分析結(jié)果可能是對許多開發(fā)人員的挑戰(zhàn)。這篇文章介紹了使用 JProfiler 跟蹤分析 Java 服務(wù)器的性能。

    ?

    簡單的性能問題很容易分離并解決,然而,大的性能問題,如內(nèi)存溢出或者系統(tǒng)的罷工,通常在系統(tǒng)處于高負載情況下發(fā)生,就不能這么簡單的處理了。這些問題需要一個獨立的測試環(huán)境、一個模擬的負載,并且需要仔細地分析和跟蹤。

    ?

    在這篇文章中,我使用比較通用的工具( JProfiler JBuilder )和設(shè)備創(chuàng)建了一個性能監(jiān)控分析環(huán)境,跟蹤本地和遠程的服務(wù)器程序,專注于三個性能問題:內(nèi)存、垃圾回收和多線程運行狀況,從而很好的監(jiān)視 JVM 運行情況及其性能。

    2 、改善服務(wù)器的性能

    服務(wù)器的性能改善是依賴于數(shù)據(jù)的。沒有可靠的數(shù)據(jù)基礎(chǔ)而更改應(yīng)用或環(huán)境會導(dǎo)致更差的結(jié)果。分析器提供有用的 Java 服務(wù)器應(yīng)用信息,但由于從單用戶負載下的數(shù)據(jù)與多用戶負載下得到的數(shù)據(jù)是完全不同的,這導(dǎo)致分析器的數(shù)據(jù)并不精確。在開發(fā)階段使用分析器來優(yōu)化應(yīng)用的性能是一個好的方式,但在高負載下的應(yīng)用分析可以取到更好的效果。

    ?

    在負載下分析服務(wù)器應(yīng)用的性能需要一些基本的元素:

    ?

    1、? 可控的進行應(yīng)用負載測試的環(huán)境。

    2、? 可控的人造負載使得應(yīng)用滿負荷運行。

    3、? 來自監(jiān)視器、應(yīng)用和負載測試工具自身的數(shù)據(jù)搜集。

    4、? 性能改變的跟蹤。

    ?

    不要低估最后一個需求(性能跟蹤)的重要性因為如果不能跟蹤性能你就不能實際的管理項目。性能上 10-20% 的改善對單用戶環(huán)境來說并沒有什么不同,但對支持人員來說就不一樣了。 20% 的改善是非常大的,而且通過跟蹤性能的改善,你可以提供重要的反饋和持續(xù)跟蹤。

    ?

    雖然性能跟蹤很重要,但有時為了使后續(xù)的測試更加精確而不得不拋棄先前的測試結(jié)果。在性能測試中,改善負載測試的精確性可能需要修改模擬環(huán)境,而這些變化是必須的,通過變化前后的負載測試你可以觀察到其中的轉(zhuǎn)變。

    3 、 分析器原理

    現(xiàn)在幾乎所有的分析器都是從同一個起點和約束開始的: Java 虛擬機分析器界面 (JVMPI) ( 參考 "The Java Virtual Machine Profiler Interface") 。 Sun 微系統(tǒng)的 API 允許工具開發(fā)商接口或者連接到遵循 JVMPI JVM 上,并且監(jiān)控運作的方式以及 JVM 運行任何 Java 程序時的關(guān)鍵事件 -- 從單獨的應(yīng)用程序到 Applet 、 Servlet 和企業(yè) JavaBeans (EJB) 組件。

    在分析器內(nèi)啟動一個程序意味著生成、捕捉、和觀察大量數(shù)據(jù),所以所有的分析器都包含著不同的方法來控制數(shù)據(jù)的流動,在不同的標(biāo)準(zhǔn)以及每一封裝包的基礎(chǔ)上進行過濾。同樣 也可以使用靈活的正規(guī)表達式類型模式來完成。

    4 JProfiler 簡介

    是一個全功能的 Java 剖析工具( profiler ),專用于分析 J2SE J2EE 應(yīng)用程序。它把 CPU 、執(zhí)行緒和內(nèi)存的剖析組合在一個強大的 應(yīng)用中。 JProfiler 可提供許多 IDE 整合和應(yīng)用服務(wù)器整合用途。 JProfiler 直覺式的 GUI 讓你可以找到效能瓶頸、抓出內(nèi)存漏失 (memory?leaks) 、并解決執(zhí)行緒的問題。它讓你得以對 heap?walker 作資源回收器的 root?analysis ,可以輕易找出內(nèi)存溢出; heap 快照( snapshot )模式讓未被參照( reference )的對象、稍微被參照的對象、或在終結(jié)( finalization )隊列的對象 都會被移除;整合精靈以便剖析瀏覽器的 Java 外掛功能。

    ?

    目前最新的版本是 4.1.2 ,幾乎支持所有常用的 IDE Application Server ,可以到其 EJ 官方網(wǎng)站 http://www.ej-technologies.com/ 下載,申請一個十天的試用注冊碼。

    5 、 JProfiler 特征

    5.1 內(nèi)存剖析 Memory profiler

    JProfiler 的內(nèi)存視圖部分可以提供動態(tài)的內(nèi)存使用狀況更新視圖和顯示關(guān)于內(nèi)存分配狀況信息的視圖。所有的視圖都有幾個聚集層并且能夠顯示現(xiàn)有存在的對象和作為垃圾回收的對象。

    • 所有對象
      顯示類或在狀況統(tǒng)計和尺碼信息堆上所有對象的包。你可以標(biāo)記當(dāng)前值并顯示差異值。
    • 記錄對象 Record objects
      顯示類或所有已記錄對象的包。你可以標(biāo)記出當(dāng)前值并且顯示差異值。
    • 分配訪問樹 Allocation call tree
      顯示一棵請求樹或者方法、類、包或?qū)σ堰x擇類有帶注釋的分配信息的J2EE組件。
    • 分配熱點 Allocation hot spots
      顯示一個列表,包括方法、類、包或分配已選類的J2EE組件。你可以標(biāo)注當(dāng)前值并且顯示差異值。對于每個熱點都可以顯示它的跟蹤記錄樹。

    5.2 堆遍歷 Heap walker

    JProfiler的堆遍歷器(Heap walker)中,你可以對堆的狀況進行快照并且可以通過選擇步驟下尋找感興趣的對象。堆遍歷器有五個視圖:

    • Classes
      顯示所有類和它們的實例。
    • 分配 Allocations
      為所有記錄對象顯示分配樹和分配熱點。
    • 索引 References
      為單個對象和顯示到垃圾回收根目錄的路徑提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。
    • 數(shù)據(jù) Data
      為單個對象顯示實例和類數(shù)據(jù)。
    • 時間 Time
      顯示一個對已記錄對象的解決時間的柱狀圖。

    5.3 CPU 剖析 CPU profiler

    JProfiler 提供不同的方法來記錄訪問樹以優(yōu)化性能和細節(jié)。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類、包或J2EE組件等不同層上。CPU視圖部分包括:

    • 訪問樹 Call tree
      顯示一個積累的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問隊列。JDBC,JMSJNDI服務(wù)請求都被注釋在請求樹中。請求樹可以根據(jù)ServletJSPURL的不同需要進行拆分。
    • 熱點 Hot spots
      顯示消耗時間最多的方法的列表。對每個熱點都能夠顯示回溯樹。該熱點可以按照方法請求,JDBCJMSJNDI服務(wù)請求以及按照URL請求來進行計算。
    • 訪問圖 Call graph
      顯示一個從已選方法、類、包或J2EE組件開始的訪問隊列的圖。

    5.4 線程剖析 Thread profiler

    對線程剖析,JProfiler提供以下視圖:

    • 線程歷史 Thread history
      顯示一個與線程活動和線程狀態(tài)在一起的活動時間表。
    • 線程監(jiān)控 Thread monitor
      顯示一個列表,包括所有的活動線程以及它們目前的活動狀況。
    • 死鎖探測圖表 Deadlock Detection
      顯示一個包含了所有在JVM里的死鎖圖表。
    • 目前使用的監(jiān)測器 Current monitor useage
      顯示目前使用的監(jiān)測器并且包括它們的關(guān)聯(lián)線程。
    • 歷史檢測記錄 History usage history
      顯示重大的等待事件和阻塞事件的歷史記錄。
    • 監(jiān)測使用狀態(tài) Monitor usage statistics
      顯示分組監(jiān)測,線程和監(jiān)測類的統(tǒng)計監(jiān)測數(shù)據(jù)。

    5.5 VM 遙感勘測技術(shù) VM telemetry

    觀察JVM的內(nèi)部狀態(tài),JProfiler提供了不同的遙感勘測視圖,如下所示:

    • Heap
      顯示一個堆的使用狀況和堆尺寸大小活動時間表。
    • 記錄的對象 Recorded objects
      顯示一張關(guān)于活動對象與數(shù)組的圖表的活動時間表。
    • 垃圾回收 Garbage collector
      顯示一張關(guān)于垃圾回收活動的活動時間表。
    • Classes
      顯示一個與已裝載類的圖表的活動時間表。
    • 線程 Threads
      顯示一個與動態(tài)線程圖表的活動時間表。

    6 、 本地監(jiān)控

    系統(tǒng)環(huán)境 Windows OS ;軟件 JBuilderX/2005 JProfiler 4.1.2

    ?

    1 、安裝 JBuilderX JProfiler 4.1.2

    2 、運行 JProfiler Session-> IDE integration tab, IDE 選擇Borland JBuilder7 to 2005,點擊Integrate按鈕,選擇JBuilder的安裝目錄,確認,會看到已經(jīng)將JProfilerOpenTool的形式,成功整合到JBuilder中,見下圖。

    ?

    ?


    3
    、運行 JBuilder ,打開 Run->Configurations ,選擇或新建一個 Runtime ,在 Optimize 選項中就可以看到 JProfiler ,可以選擇每次運行程序新建一個 JProfiler 窗口的提示設(shè)置。

    4 、點擊 Optimize Project 按鈕,運行程序。




    5
    、彈出如下的 JProfiler 窗口,確認相關(guān)的信息即可。




    6
    、至此,就可以監(jiān)控本地服務(wù)器的各個方面的性能了。







    7 遠程監(jiān)控

    服務(wù)器程序一般運行在遠程的服務(wù)器設(shè)備上,有時候我們還需要遠程監(jiān)控商用的服務(wù)器資源。

    ?

    服務(wù)器操作系統(tǒng) Linux OS ,安裝步驟如下:
    1、./jprofiler_linux_4_1_2.sh,出現(xiàn)如下提示:
    testing JVM in /usr/jdk1.4 ...
    Starting Installer ...
    注:對于沒有安裝X Server的機器,需要執(zhí)行./jprofiler_linux_4_1_2.sh -q,否則會提示,
    testing JVM in /usr/jdk1.4 ...
    Starting Installer ...
    This installer needs access to an X Server.
    If this is not possible, you can run the installer in unattended mode
    by passing the argument -q to the installer.
    2、安裝完畢后,會在/opt目錄下,找到j(luò)profiler的安裝目錄,/opt/jprofiler4。

    本地操作系統(tǒng)
    WindowXP ,相關(guān)的配置如下:

    ?

    1 、本地安裝 JProfiler , Linux 服務(wù)器上也安裝 JProfiler (只有本地 / 監(jiān)控者的需要輸入序列號)。

    2 、打開本地的 JProfiler , session->Integration wizards-> New Remote integration

    3 、選擇 on a remote computer , platform 選擇 linux x86/AMD64 ,點擊 next

    4 、輸入遠程 ip 地址,點擊 next

    5 、輸入遠程 JProfiler 的安裝目錄,默認都安裝在 /opt/jprofiler4 下,一路NEXT

    6 、出現(xiàn)下面提示框,按照要求配置下服務(wù)器的設(shè)置,界面如下:


    Java
    執(zhí)行語句中加入下列運行參數(shù)

    ?-Xint -Xrunjprofiler:port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar

    /etc/profile 中加入 export LD_LIBRARY_PATH=/opt/jprofiler4/bin/linux-x86 ,退出、重新登陸。

    ?

    7 、好了,全部配置完畢,先運行遠程服務(wù)器程序,再打開本地的 JProfiler 程序,握手成功后,遠程程序正常運行了。

    ?

    服務(wù)器信息如下:

    [root@ns 55556]# tail -f nohup.out

    JProfiler> Protocol version 21

    JProfiler> Using JVMPI

    JProfiler> 32-bit library

    JProfiler> Listening on port: 8849.

    JProfiler> Native library initialized

    JProfiler> Waiting for a connection from the JProfiler GUI ...

    // 以上為本地 JProfiler 連上前的系統(tǒng)提示

    JProfiler> Using dynamic instrumentation

    JProfiler> Time measurement: elapsed time

    JProfiler> CPU profiling enabled

    JProfiler> Starting org/anymobile/server/cmwap/CmwapServer ...

    ?

    2005/12/15 17:05:46 [ INFO] - Starting Cmwap Stand Server ...
    2005/12/15 17:05:47 [ INFO] - HandleThread runing ......

    ?

    8 、補充說明及參考

    8.1 補充說明

    ?

    如果你希望動態(tài)保存當(dāng)前 Session 的運行數(shù)據(jù)的快照,點擊 JProfiler 的保存按鈕即可;

    可以通過 JProfiler Start Center Open snapshot tab 打開保存的 Session

    你也可以右鍵點擊某個視圖,靜態(tài)保存到 HTML 文件,文字描述加視圖圖片;

    有一些視圖的數(shù)據(jù)只會運行一次,不會動態(tài)的刷新,如內(nèi)存視圖中的分配訪問樹等視圖;

    WinXP JProfiler 似乎不支持中文, 2K 下支持的,上面有一些圖片是在 2K 系統(tǒng)上截取的;

    另外, JProfiler 還可以監(jiān)控某個 Application Server 、 Applet ,功能非常強大,可以參考軟件自帶的 Help 。

    ?

    8.2 參考

    ?

    JProfiler Tutorials??????? ????? http://www.ej-technologies.com/products/jprofiler/tutorials.html

    What's new in JProfiler???? http://www.ej-technologies.com/products/jprofiler/whatsnew41.html

    JProfiler help??????????????????????? http://resources.ej-technologies.com/jprofiler/help/doc/

    Java Virtual Machine Profiler Interface? http://java.sun.com/j2se/1.3/docs/guide/jvmpi/index.html

    posted on 2006-01-17 00:11 Xu Jianxiang 閱讀(17114) 評論(1)  編輯  收藏 所屬分類: Java Tech

    評論:
    # re: JProfiler解決Java服務(wù)器的性能跟蹤[未登錄] 2014-03-13 12:52 | ***
    怎么解決  回復(fù)  更多評論
      
    主站蜘蛛池模板: 国产免费av片在线无码免费看| 一个人在线观看视频免费| 亚洲国产亚洲综合在线尤物| 2019中文字幕免费电影在线播放| 日本一区二区在线免费观看| 国产色在线|亚洲| 911精品国产亚洲日本美国韩国| 中文字幕亚洲无线码a| 无码人妻一区二区三区免费看| 亚洲精品美女久久久久9999| 国产一级一片免费播放i| 性xxxxx免费视频播放| 男女午夜24式免费视频| 亚洲91精品麻豆国产系列在线| 国产网站在线免费观看| 中文字幕一区二区免费| 亚洲第一区视频在线观看| 国产AV无码专区亚洲Av| 久久久久久久久免费看无码| 无人视频在线观看免费播放影院 | 国产天堂亚洲精品| ASS亚洲熟妇毛茸茸PICS| 亚洲日韩乱码中文无码蜜桃| 亚洲AV日韩AV鸥美在线观看| 久久精品九九亚洲精品天堂 | a色毛片免费视频| 国产线视频精品免费观看视频| 亚洲一级毛片免费看| 亚洲黄网站wwwwww| 久久精品国产亚洲AV大全| 亚洲图片在线观看| 亚洲午夜未满十八勿入| 亚洲精品第五页中文字幕| 亚洲精品福利网站| 亚洲人精品亚洲人成在线| 亚洲精品无码不卡在线播放HE | 真正全免费视频a毛片| 杨幂最新免费特级毛片| 一区二区三区免费高清视频| 亚洲中文字幕无码中文| 亚洲啪AV永久无码精品放毛片|