為Java提供運行時響應時間分析 jHiccup

openkk 14年前發布 | 20K 次閱讀 Java 性能測試和優化

Azul System公司于12月13日宣稱發 布了開源工具jHiccup,設計該工具的目的是對與應用程序底層運行平臺相關的暫停和延遲(或“hiccups”)做出度量。新工具的功能與Azul的 JitterMeter有部分重疊,但它為創建圖形化的輸出增加了基于Excel的工具。另外它還計劃增加基于Java用于生成圖表的工具。此外,想要針 對應用程序使用jHiccup也相當簡單。你只需要在用來啟動應用程序的java -c命令之前增加jHiccup即可。

jHiccup會捕獲運行時的響應時間,對其記錄日志,并通過“Hiccup圖”來顯示。這個工具不會度量應用程序代碼導致的延遲,而是會捕獲由底 層運行時平臺所導致的外部延遲,那會對所有在當時運行的應用程序產生影響。用來達到這種效果的技術非常簡單: jHiccup會向應用程序增加一個線程,它會休眠1ms,然后喚醒,并查看距上次喚醒間隔了多長時間,如果超過1ms,那么就會在內部記錄日志。這樣, 你就擁有了最佳響應時間的基準。

其中的一些“Hiccup圖”會對你很有幫助。第一個圖會顯示出靜默系統(quiet system)中的空閑應用(idle app)。圖的頂部顯示的是jHiccup系統所檢測到的內容,并且會顯示占整體運行的百分比。在下面,工具會提供更多詳細的百分比樣例,這是基于 10000點的樣例。如果系統(而不是應用程序)繁忙,那么我們就會看到延遲的數量上升,因為調度程序會占用大部分應用程序的時間。

為Java提供運行時響應時間分析 jHiccup

下面的第二幅圖顯示的是真實的案例,來自于使用CMS collector運行在Hotspot的電信收費應用程序。通過與垃圾回收日志關聯分析,我們可以知道在此顯示的是主要和次要的垃圾回收事件。CMS是 一種分代的回收程序(generational collector),它會把對象隔離為新一代和舊一代,并優先收集新一代的對象。這個應用程序在電信收費程序中很典型,它對于新一代對象很難處理,因為 它需要跟蹤大量只持續幾秒鐘就消失的會話。因此,大量新一代中的會話都會被回收。而更大的舊一代會話會造成暫停。

為Java提供運行時響應時間分析 jHiccup

jHiccup提供了一種很簡單的方式,讓你知道應該在什么地方進行優化,它會向你展示在應用程序本身有多少特定的性能問題,以及在其他地方——像Java虛擬機、操作系統、管理程序(如果用到的話)以及硬件——中有多少問題。它已經基于Creative Commons license開源。

項目主頁:http://www.baiduhome.net/lib/view/home/1330432851983

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!