Azul發(fā)布jHiccup 為Java提供運行時響應(yīng)時間分析
Azul System 公司于12月13日宣稱發(fā)布了開源工具 jHiccup,設(shè)計該工具的目的是對與應(yīng)用程序底層運行平臺相關(guān)的暫停和延遲(或“hiccups”)做出度量。新工具的功能與 Azul 的 JitterMeter 有部分重疊,但它為創(chuàng)建圖形化的輸出增加了基于 Excel 的工具。另外它還計劃增加基于 Java 用于生成圖表的工具。此外,想要針對應(yīng)用程序使用 jHiccup 也相當(dāng)簡單。你只需要在用來啟動應(yīng)用程序的 java -c命令之前增加 jHiccup 即可。
jHiccup 會捕獲運行時的響應(yīng)時間,對其記錄日志,并通過“Hiccup 圖”來顯示。這個工具不會度量應(yīng)用程序代碼導(dǎo)致的延遲,而是會捕獲由底層運行時平臺所導(dǎo)致的外部延遲,那會對所有在當(dāng)時運行的應(yīng)用程序產(chǎn)生影響。用來達(dá)到 這種效果的技術(shù)非常簡單: jHiccup 會向應(yīng)用程序增加一個線程,它會休眠 1ms,然后喚醒,并查看距上次喚醒間隔了多長時間,如果超過 1ms,那么就會在內(nèi)部記錄日志。這樣,你就擁有了***響應(yīng)時間的基準(zhǔn)。
其中的一些“Hiccup 圖”會對你很有幫助。***個圖會顯示出靜默系統(tǒng)(quiet system)中的空閑應(yīng)用(idle app)。圖的頂部顯示的是 jHiccup 系統(tǒng)所檢測到的內(nèi)容,并且會顯示占整體運行的百分比。在下面,工具會提供更多詳細(xì)的百分比樣例,這是基于 10000 點的樣例。如果系統(tǒng)(而不是應(yīng)用程序)繁忙,那么我們就會看到延遲的數(shù)量上升,因為調(diào)度程序會占用大部分應(yīng)用程序的時間。
下面的第二幅圖顯示的是真實的案例,來自于使用 CMS collector 運行在 Hotspot 的電信收費應(yīng)用程序。通過與垃圾回收日志關(guān)聯(lián)分析,我們可以知道在此顯示的是主要和次要的垃圾回收事件。CMS 是一種分代的回收程序(generational collector),它會把對象隔離為新一代和舊一代,并優(yōu)先收集新一代的對象。這個應(yīng)用程序在電信收費程序中很典型,它對于新一代對象很難處理,因為 它需要跟蹤大量只持續(xù)幾秒鐘就消失的會話。因此,大量新一代中的會話都會被回收。而更大的舊一代會話會造成暫停。
jHiccup 提供了一種很簡單的方式,讓你知道應(yīng)該在什么地方進(jìn)行優(yōu)化,它會向你展示在應(yīng)用程序本身有多少特定的性能問題,以及在其他地方——像 Java 虛擬機、操作系統(tǒng)、管理程序(如果用到的話)以及硬件——中有多少問題。你可以從 www.azulsystems.com/resources/Javatools 免費下載這個工具,它已經(jīng)基于 Creative Commons license 開源。
原文鏈接:http://www.open-open.com/news/view/1b4ec6c
【編輯推薦】