去年的年末寫了篇關(guān)于如何簡單使用jprobe發(fā)現(xiàn)和定位j2ee應用中的性能瓶頸,jprobe是quest公司的一個針對開發(fā)過程中應用程序的性能優(yōu)化工具,但這不能滿足上面提出的對于系統(tǒng)全面的性能監(jiān)控和管理要求。針對這種要求,結(jié)合目前市場上的性能分析,調(diào)優(yōu)和管理工具,比如ibm tivoli、hp openview等,這類工具的主要功能是對整個系統(tǒng)進行管理;另外一些,比如wily,veritas i3等,這類工具也具備一定的管理和對整個系統(tǒng)進行監(jiān)控的能力,同時對某一技術(shù)層次擁有非常出色的調(diào)優(yōu)和監(jiān)控能力;其他的工具如quest jprobe就如上面介紹的一樣主要是針對開發(fā)過程中程序級別的性能優(yōu)化。
本文將結(jié)合wily和weblogic,以目前流行的應用架構(gòu)來描述如何使用wily這個工具對分布式系統(tǒng)進行全方位的性能監(jiān)控和管理。以往針對j2ee的調(diào)優(yōu)很多都是依靠開發(fā)人員或者是廠商技術(shù)人員根據(jù)經(jīng)驗來對問題進行定位和調(diào)優(yōu),不能做到對系統(tǒng)全方位的了解。借助于wily之后,可以從客戶體驗出發(fā)到具體的一個sql語句進行深入細致的分析,來完成對系統(tǒng)的性能的監(jiān)控和管理。
wily公司成立于1998年,其第一個投資方是bea,對weblogic有很好的支持。
wily的核心產(chǎn)品是interscope,包括introscopeenterprise manager, introscope agent, introscopeworkstation.通過introscope可以明確的顯示出在j2ee應用程序的什么為止出現(xiàn)了什么問題,比如在應用性能下降時,查明j2ee應用系統(tǒng)的什么位置導致問題是一個非常麻煩的工作,借助introscope將會變的非常簡單。
wily introscope的系統(tǒng)架構(gòu)如下圖

wily introscope特點
通過introscope的結(jié)構(gòu)圖可以看到,核心部分為introscope的enterprise manager,通過部署在應用中的各種不同agent來收集系統(tǒng)運行中的各項性能指標數(shù)據(jù),匯總到em進行分析,并能利用對歷史數(shù)據(jù)的分析對系統(tǒng)未來的性能表現(xiàn)進行評估;分析的結(jié)構(gòu)可以具體的定位到什么位置除了什么問題,并將問題進行分類反饋到相應的系統(tǒng)維護人員,比如網(wǎng)絡(luò),系統(tǒng)硬件維護人員,或者是開發(fā)和測試人員,對出現(xiàn)的問題進行調(diào)整。
  wily與weblogic的集成
  wily有專門針對weblogic的性能監(jiān)控模板,為powerpack,有效監(jiān)控最為關(guān)鍵的weblogic資源,包括線程池,jdbc連接池等,并且第一個實現(xiàn)了對portal(bea portal,ibm portal等)的性能管理和監(jiān)控。通過powerpack可以看到部署在weblogic上的應用的各種性能指標,以weblogic自帶的medical records例子來說,如下圖:

可以看到包括系統(tǒng)資源在內(nèi)的各種性能指標,和j2ee應用中各種組件的性能指標,通過配置可以跟蹤到某一個具體的jsp或者是servlet的性能情況,并且可以配置在某一性能指標達到指定的閥值后進行報警操作。
通過提供的transaction trace功能來分析超過指定時間的某一具體transaction的內(nèi)部情況。

通過樹狀結(jié)構(gòu)可以看到事務內(nèi)部的調(diào)用情況并且快速的定位到某一有問題的操作,通過該技術(shù)可實時跟蹤生產(chǎn)系統(tǒng)中的某個具體事務問題,提供事務的執(zhí)行路徑和組件響應時間的詳細信息,如上圖。并能及時修正事務的性能問題。

除此之外該powerpack包還提供了針對weblogic系統(tǒng)運行的一個性能查看控制臺,通過該控制臺可以直觀的監(jiān)控系統(tǒng)的那一部分出了問題,并且通過控制臺可以方便的定制所關(guān)心的各種性能指標,定制后能通過瀏覽器的方式查看整個系統(tǒng)的運行情況。

配置啟動步驟
安裝步驟,只需解壓縮powerpack包到bea的安裝目錄內(nèi)即可(其他目錄也可以,在配置的時候進行指定即可);
set java_options = -xbootclasspath/p:c:/bea/weblogic81/wily/connectors/autoprobeconnector.jar; c:/bea/weblogic81/wily/agent.jar -dcom.wily.introscope.agentprofile= c:/bea/weblogic81/wily/introscopeagent.profile
配置啟動完成后,通過設(shè)置相應的監(jiān)控性能項,在控制臺中可以通過各種不同類型的圖表來觀察系統(tǒng)的運行狀態(tài)。
  如何發(fā)現(xiàn)系統(tǒng)性能問題?
  由于例子程序在運行中并沒有很大的壓力,通過控制臺能看到系統(tǒng)的負載情況,為了模擬出和生產(chǎn)系統(tǒng)中相同的運行情況,這里借助于segue公司的silkperformer來對weblogic的例子程序進行加壓(silkperformer也能監(jiān)控到系統(tǒng)的各項性能指標,這里把采集的數(shù)據(jù)與wily進行大概的比較),通過在不同負載下收集到的性能數(shù)據(jù),來分析系統(tǒng)中可能存在的性能問題。
模擬運行步驟
  
| 并發(fā)用戶數(shù) | 測試時間 | 
|---|---|
| 10 | 10分鐘 | 
| 20 | 10分鐘 | 
壓力模式設(shè)置

可能出現(xiàn)的性能問題和觀察到的性能指標特征描述
| 性能問題 | 性能指標特征 | 問題描述 | 
|---|---|---|
| 系統(tǒng)性能隨負載增加逐漸下降 | weblogic配置的線程數(shù)隨負載的增加出現(xiàn)匱乏。 | 資源瓶頸 | 
| 可預見的死鎖,系統(tǒng)性能隨運行時間的增加逐漸下降 | jdbc連接等資源無法回收,從性能指標圖上可以看出可使用的該資源為0,并有大量等待。 | 資源泄漏等 | 
10個并發(fā)系統(tǒng)的線程使用情況,通過wily獲取

pendingrequestcurrentcount=0,waitingconnectioncurrentcount=0,表明沒有等待的request,系統(tǒng)響應很快。
10個并發(fā)系統(tǒng)的jdbc使用情況,通過wily獲取

concurrent invocations 最大值為8,并且平均查詢的時間曲線表現(xiàn)也比較平穩(wěn)。
20個并發(fā)系統(tǒng)的線程使用情況,通過wily獲取

executethreadcurrentidlecount=0,pendingrequestcurrentcount開始有變化,對比10個并發(fā)用戶的線程使用情況,很明顯可以看出在20個并發(fā)的壓力下,系統(tǒng)的線程資源開始不足。
20個并發(fā)系統(tǒng)的jdbc使用情況,通過wily獲取

平均查詢時間有比較大的起伏,運行一段時間后可以看到該值為0,connection count的值也保持不變,基本不響應獲取連接請求。這個時候訪問系統(tǒng)頁面,無法進入。
  結(jié)論
  以上例子只是通過簡單的性能指標來觀察系統(tǒng)運行狀態(tài),對于一個復雜的系統(tǒng)還需要更多的性能指標數(shù)據(jù)來分析系統(tǒng)是否運行良好,比如可以檢查系統(tǒng)是否存在內(nèi)存泄漏,網(wǎng)絡(luò)速度是否夠快等。一般的系統(tǒng)調(diào)優(yōu)很多都是在出了問題后,憑經(jīng)驗對照系統(tǒng)的性能表現(xiàn)來進行,很多時候可能會花費很多的時間才能定位的真正的性能瓶頸,借助工具之后,可以直觀的對整個系統(tǒng)的各個部分進行監(jiān)控,一旦出現(xiàn)問題,可以及時的報警并能迅速定位問題解決問題。
新聞熱點
疑難解答
圖片精選