jClarity发布Censum 3.0
近日,jClarity公司發布了旗下的垃圾回收分析工具Censum的3.0版本。新版本的主要特性包括安全點(Safepoint)日志分析,圖表展示G1垃圾收集器行為以及分析什么時候應用程序使用過多操作系統活動。
\\新的G1收集器注定會成為焦點,因為G1將成為服務器配置Java 9中默認的垃圾收集器,安全點的日志分析可以幫助用戶更好地進行垃圾收集調優。安全點是一種機制,它通過JVM徹底停止應用程序,以便能夠執行特定的維護任務。這樣,一個全面的垃圾收集(也稱為Stop The World or STW )將成為促使安全點的主要原因之一,這就是垃圾收集調優為何如此受關注的原因。然而,當用戶逐漸了解如何避免由GC引起的停頓,他們同時也需要考慮其他原因引起的安全點。
\\雖然有一些進展,但是性能分析和調優對于大多數用戶來說仍是一個晦澀的話題。因此,InfoQ采訪了jClarity的CTO Kirk Pepperdine和CEO Martijn Verburg,以便了解更多性能的技巧和知識,以及Censum如何幫助區分這兩者。
\\InfoQ:可以尋求幫助的資源不是很多,這是性能調優方面存在的一個問題,這也是你們創建Censum的原因嗎?是為了提供更多這方面的資源么?
\\\Kirk Pepperdine:事實上,在Censum甚至早期的jClarity工作時,它源于我對應用程序性能中內存管理重要性處理工具的失望。在Sun有一些想法構建一個框架來分析日志并創建一些圖表,但結果證明只能產生一些數據點。我認為這是不夠的,并得出結論認為,我要得到我所需要的,唯一的方式就是自己創建它。所以,最初,Censum只是一個我為我自己創建的工具。我從來沒有想過做其他任何事情,直到我遇到了Ben Evans 和Martijn Verburg。
\\\InfoQ:這也是你們創建Friends of jClarity通訊錄的原因嗎?
\\\Martijn Verburg:當然。Friends of jClarity 開始創建一個社區,在這里來自世界各地的性能調優專家在一個空間,幫助在性能調優方面有問題的工程師。有一個友好和開放的列表,“沒有問題是愚蠢的”,在這里有一些有經驗的專家提供意見。
\\性能調優對于大多數人是暗黑藝術,而且在博客和網站有大量的民間傳說和不正確的信息,如堆棧溢出。Friends of jClarity 擁有多方面領先的性能調優專家和實際工作在Java/JVM 核心技術的工程師。列表中給出的答案和建議往往要比其他地方更準確、正確、時效性更強。
\\\InfoQ:誰可以或者說誰應該加入Friends of jClarity。
\\\Martijn Verburg:任何人都可以點擊Apply to join group按鈕加入。如果任何人有任何問題可以發郵件給我們支持團隊:在jclarity .com的支持。
\\\InfoQ:對于性能調優領域的新人,很容易認為使應用程序更快的是CPU周期,但是在Censum看起來更多的是內存管理。你認為在性能調優時,還有其他什么方面的誤解比較普遍。
\\\Kirk Pepperdine:性能調優是了解你有什么資源,哪些資源使用頻率較低或過度使用。一旦你了解你的核心資源(CPU,內存,磁盤,網絡,JVM線程等),以及對于這些資源輸入輸出定時測量,你可以很快找出瓶頸在哪,如何減少這種依賴。
\\應用性能是CPU限制,這是一個普遍的誤解。事實上,對很多應用都是特殊的,無論是Java,C#或CPU限制。我們見過不少客戶花大量的錢買更大或更好的CPU,卻沒有看到性能的改善。
\\\InfoQ:總是有很多人談論性能,解決方式不同:有的試圖重寫代碼,有的在GC標志上進行優化,你推薦的第一步是什么?什么時候需要開始使用Censum?
\\\Kirk Pepperdine:如果你沒有確定問題的根源是什么,很難知道怎么調優。Censum是我們用來確定問題根本原因的工具之一。一旦你確定了根本原因,如何調優會很明顯。有些問題可以通過修改幾個參數來解決,但在我們的經驗中大部分需要通過重構組件來解決。之后,Censum可以幫助你做出調優的決定,確保GC不再出現問題。
\\\InfoQ:當談到性能,很多的談話是圍繞軟件,但明顯的硬件起著非常重要的作用。Censum是否會給你提示,你可能需要更換硬件(如更快的CPU,更多的內存,等等)?
\\\Kirk Pepperdine:是的,Censum可以幫你確定你的應用程序需要多少硬件從一個內存管理點平穩運行。例如,Censum根據你設置的大小進行估計,這是常駐Java堆的總數據量。這允許你設置最大的堆大小,反過來又指導你在管理上需要多少真正的內存。
\\另一個典型的問題是分配率(在一段時間內分配的內存量)。這些天CPU和內存子系統很快。你可以配置千兆字節每秒的數據對性能沒有明顯的影響。但是,如果你同一時間分配幾個字節,這將是一個問題。因為大多數Java應用程序做的正是這個(同一時間分配幾個字節),在分配成為主要性能瓶頸前你并不需要很高的分配率。這是可執行剖析器(execution profilers)可能錯過的一個問題,即使被捕獲了,往往會以一個混亂的方式暴露問題。Censum會告訴你分配率是多少,你可以使用這些信息來選擇一個分配器,或者至少是更好地理解執行剖析器發出的信息。它只是簡單地幫助你把系統可能發給你的信號關系理清。反過來,你會得到更好的可擴展性,這意味著你可以用更少的硬件來處理更多的負載。舉個例子,我們的一個客戶用Censum減少硬件需求,一個特定的情況下,服務器從80臺減少到4臺。
\\\InfoQ:Censum提供了大量的圖表和指標,能告訴我們你們定義這些圖表的過程嗎?你們如何決定哪些是有用的圖表?
\\\Martijn Verburg:Kirk自他第一次接觸Java就開始進行垃圾收集算法調優,所以他有很多的靈感。當然,其他的團隊成員也會提出建議。然而,一個主要的靈感來源于回答客戶的問題:這個想法是創建新的圖表,為他們提供直觀的答案。
\\例如,客戶最近想知道應用中一些莫名其妙的Full GCs從哪里來。我們進行挖掘并意識到我們忽略了極少數情況下造成Full GCs的PermGen或Metaspace溢出源于什么地方。所以Kirk想出了一些新的圖表展示這些事件的發生,并建立最終用戶易于理解的分析報告,在線上表示\"Go and make your PermGen size X\"。
\\\InfoQ:G1 regionalises內存管理,而不是傳統的generational內存,適應Censum有多難?
\\\Martijn Verburg:Censum通過JVM生成的日志文件讀取GC數據,它不直接接觸JVM。副作用是,訪問新的數據很容易!當試圖分析這些新的數據時,問題就來了。如果日志格式沒有定義或標準化,并且可以被Hotspot工程師修改的非常少時,這是非常困難的。
\\經過幾個月的工作以及分析整理,我們能夠通過Censum為G1創建內部數據模型。如果對內存池模型和GC行為有一個明確的結構和接口,這會變得非常容易。為G1創建圖表也會非常容易,因為我們可以利用大量的已經為其他收集者創建的基礎設施。
\\建立有意義的分析是最難的部分。在G1沒有太多的研究成果時,盡管人們開始使用并產生真正的生產系統中的信息,但我們不能像其他的收集者一樣記錄相同的日志主體。這意味著我們沒有盡可能多的數據,以確定哪些是有價值的,哪些不是。
\\在G1分析方面,我們還有很多工作要做,但至少我們現在能夠提醒用戶對表現不佳的應用程序或危險行為模式進行收集。
\\\InfoQ:Censum現在支持安全點日志,這意味著非GC STW停頓可以被分析。鑒于GC停頓是分析的主要目標,我們應該怎樣看待和思考非GC停頓?
\\\Kirk Pepperdine:垃圾收集確實是應用程序線程JVM安全點的原因之一。還有許多其他的維護措施,也將讓你的應用程序更快。偏向鎖可能是最常見的一個,但不幸的是,我們不能確切知道,因為我們沒有大量的數據,更糟的是,我猜測很少有人知道得到這個數據的可能性,因此,甚至更少的人可以收集。現在,Censum將這個數據可視化,我們希望改變這一狀況,讓人們知道他們可以如何減緩safepointing率。
\\\InfoQ:Censum下一步計劃是什么?
\\\Martijn Verburg:我們正在建立一個流的版本,可以監視多個JVM實時提供同樣的詳細指標和分析;而且,利用實時數據可以對要發生的危險事件進行警報,甚至預測可能發生的事件,類似于“在未來2分鐘你的應用有95%的可能出現內存不足錯誤(OOME)。”這樣的警報信息。
\\Censum也將與我們的Illuminate產品集成。總之,Illuminate分析應用程序并指示什么類型的問題最影響性能,這是內存/ GC相關的或其他的東西(例如磁盤I / O,線程死鎖,線程饑餓,等待外部系統響應)。如果問題是有關GC,那么你就可以深入了解Censum的功能特性,并獲得如何解決問題的一些建議。
\\\Martijn Verburg是jClarity聯合創始人兼CEO,jClarity是一個Java/JVM性能優化公司,提供了業界領先的分析工具,通過機器學習驅動。Martijn Verburg是軟件方法和技術團隊優化的權威專家,擁有多年運行大型分布式項目的經驗。他在大型會議做過演講,他樂于在The Diabolical Developer 挑戰行業現狀。他是倫敦java社區(London Java Community)的共同領導者,領導全球人致力于采用Java標準的Adopt a JSR 和 Adopt OpenJDK項目。在2012年的貢獻中,他被公認為Java冠軍(Java Champion)。
\\Kirk Pepperdine是jClarity的聯合創始人兼CTO。他致力于高性能和分布式計算近20年。起初,Kirk主要從事架構、開發、Cray公司以及其他高性能計算平臺上運行的應用程序調優。現在他專注于Java,從事項目生命周期各個階段各方面的性能和調優工作。為了表彰他對Java社區的杰出貢獻,2006年Kirk被評為Java冠軍。
\\查看英文原文:jClarity Releases Censum 3.0
\\感謝張龍對本文的審校。
\給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們,并與我們的編輯和其他讀者朋友交流(歡迎加入InfoQ讀者交流群(已滿),InfoQ讀者交流群(#2))。
總結
以上是生活随笔為你收集整理的jClarity发布Censum 3.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript学习笔记(8)——J
- 下一篇: Spark生态顶级项目汇总