web 隨著客戶對系統效能的要求越來越高,對於任何系統來講,如何保證系統的效能並且能夠在出現效能問題之前可以預測和定位到問題,成了關鍵。系統上線之前的系統測試和上線之後對整個系統各個環節的效能監控是確保系統以優異效能啟動並執行方法。
去年的年末寫了篇關於如何簡單使用JPROBE發現和定位J2EE應用中的效能瓶頸,JPROBE是QUEST公司的一個針對開發過程中應用程式的效能最佳化工具,但這不能滿足上面提出的對於系統全面的效能監控和管理要求。針對這種要求,結合目前市場上的效能分析,調優和管理工具,比如IBM Tivoli、HP Openview等,這類工具的主要功能是對整個系統進行管理;另外一些,比如Wily,Veritas i3等,這類工具也具備一定的管理和對整個系統進行監控的能力,同時對某一技術層次擁有非常出色的調優和監控能力;其他的工具如Quest JProbe就如上面介紹的一樣主要是針對開發過程中程式層級的效能最佳化。
本文將結合WILY和WEBLOGIC,以目前流行的應用架構來描述如何使用WILY這個工具對分布式系統進行全方位的效能監控和管理。以往針對J2EE的調優很多都是依靠開發人員或者是廠商技術人員根據經驗來對問題進行定位和調優,不能做到對系統全方位的瞭解。藉助於WILY之後,可以從客戶體驗出發到具體的一個SQL語句進行深入細緻的分析,來完成對系統的效能的監控和管理。
Wily公司成立於1998年,其第一個投資方是BEA,對WEBLOGIC有很好的支援。
Wily的核心產品是InterScope,包括IntroScopeEnterprise Manager, IntroScope Agent, IntroScopeWorkStation.通過IntroScope可以明確的顯示出在J2EE應用程式的什麼為止出現了什麼問題,比如在應用效能下降時,查明J2EE應用系統的什麼位置導致問題是一個非常麻煩的工作,藉助IntroScope將會變的非常簡單。
Wily Introscope的系統架構如下圖
Wily IntroScope特點
- 應用程式監控,低系統開銷,全面監控系統效能,專有的Blame技術即時精確地辨別引起效能問題的構件;
- 應用伺服器監控,最廣泛的應用伺服器支援,AutoProbe技術整合應用伺服器自動擷取伺服器資訊;多平台的支援;
- 對非JAVA系統的監控,通過EPA與Data API模組,100%安全執行緒;
- 系統管理流程整合,通過MIB與系統管理架構整合,控制台能與HP OpenView,Tivoli等整合,SmartTrigger警示系統與電子郵件,程式等整合;
- Wily特有的SmartStor技術可以方便快速的儲存監控資料資訊,並能根據資料資訊完成系統曆史資料分析和趨勢分析;
- 部分專有技術成為業界的標準。
通過IntroScope的結構圖可以看到,核心部分為IntroScope的Enterprise Manager,通過部署在應用中的各種不同AGENT來收集系統運行中的各項效能指標資料,匯總到EM進行分析,並能利用對曆史資料的分析對系統未來的效能表現進行評估;分析的結構可以具體的定位到什麼位置除了什麼問題,並將問題進行分類反饋到相應的系統維護人員,比如網路,系統硬體維護人員,或者是開發與測試人員,對出現的問題進行調整。
Wily與Weblogic的整合
Wily有專門針對Weblogic的效能監控模板,為PowerPack,有效監控最為關鍵的WEBLOGIC資源,包括線程池,JDBC串連池等,並且第一個實現了對Portal(BEA PORTAL,IBM PORTAL等)的效能管理和監控。通過PowerPack可以看到部署在WEBLOGIC上的應用的各種效能指標,以WEBLOGIC內建的Medical Records例子來說,如下圖:
可以看到包括系統資源在內的各種效能指標,和J2EE應用中各種組件的效能指標,通過配置可以跟蹤到某一個具體的JSP或者是SERVLET的效能情況,並且可以配置在某一效能指標達到指定的閥值後進行警示操作。
通過提供的Transaction Trace功能來分析超過指定時間的某一具體Transaction的內部情況。
通過樹狀結構可以看到事務內部的調用情況並且快速的定位到某一有問題的操作,通過該技術可即時跟蹤生產系統中的某個具體事務問題,提供事務的執行路徑和組件回應時間的詳細資料,如上圖。並能及時修正事務的效能問題。
除此之外該PowerPack包還提供了針對WEBLOGIC系統啟動並執行一個效能查看控制台,通過該控制台可以直觀的監控系統的那一部分出了問題,並且通過控制台可以方便的定製所關心的各種效能指標,定製後能通過瀏覽器的方式查看整個系統的運行情況。
配置啟動步驟
- BEA Weblogic的安裝(安裝時選擇安裝帶的例子程式,詳細步驟略);
- IntroScope的安裝,安裝後有IntroScope Enterprise Manager,IntroScope Workstation,IntroScope WebViewer三個組件(安裝步驟略);
- PowerPack for WebLogic的安裝。
安裝步驟,只需解壓縮PowerPack包到BEA的安裝目錄內即可(其他目錄也可以,在配置的時候進行指定即可);
- 配置啟動Weblogic
以Weblogic內建的Medical Records服務為例子,配置方法如下
修改開機檔案startMedRecServer.cmd(不同的JVM配置略有不同)
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
- 啟動IntroScope Enterprise Manager;
- 啟動Weblogic;
- 服務啟動後,通過IntroScope WorkStation登陸後,可以在控制台看到被監控的應用節點和相關效能節點,展開後可以看到相應的效能指標值。
配置啟動完成後,通過設定相應的監控效能項,在控制台中可以通過各種不同類型的圖表來觀察系統的運行狀態。
如何發現系統效能問題?
由於例子程式在運行中並沒有很大的壓力,通過控制台能看到系統的負載情況,為了類比出和生產系統中相同的運行情況,這裡藉助於Segue公司的SilkPerformer來對Weblogic的例子程式進行加壓(SilkPerformer也能監控到系統的各項效能指標,這裡把採集的資料與Wily進行大概的比較),通過在不同負載下收集到的效能資料,來分析系統中可能存在的效能問題。
類比運行步驟
- 回合組態好的WEBLOGIC服務;
- 選擇需要進行類比的業務操作,如選擇登陸操作。
- 用SilkPerformer錄製這段業務操作,產生類比壓力的指令碼;
- 進行壓力模式設定,如圖,設定不同的並發使用者數。
| 並發使用者數 |
測試時間 |
| 10 |
10分鐘 |
| 20 |
10分鐘 |
壓力模式設定
可能出現的效能問題和觀察到的效能指標特徵描述
| 效能問題 |
效能指標特徵 |
問題描述 |
| 系統效能隨負載增加逐漸下降 |
WEBLOGIC配置的線程數隨負載的增加出現匱乏。 |
資源瓶頸 |
| 可預見的死結,系統效能隨已耗用時間的增加逐漸下降 |
JDBC串連等資源無法回收,從效能指標圖上可以看出可使用的該資源為0,並有大量等待。 |
資源泄漏等 |
10個並發系統的線程使用方式,通過WILY擷取
PendingRequestCurrentCount=0,WaitingConnectionCurrentCount=0,表明沒有等待的request,系統響應很快。
10個並發系統的JDBC使用方式,通過WILY擷取
Concurrent Invocations 最大值為8,並且平均查詢的時間曲線表現也比較平穩。
20個並發系統的線程使用方式,通過WILY擷取
ExecuteThreadCurrentIdleCount=0,PendingRequestCurrentCount開始有變化,對比10個並發使用者的線程使用方式,很明顯可以看出在20個並發的壓力下,系統的線程資源開始不足。
20個並發系統的JDBC使用方式,通過WILY擷取
平均查詢時間有比較大的起伏,運行一段時間後可以看到該值為0,Connection Count的值也保持不變,基本不響應擷取串連請求。這個時候訪問系統頁面,無法進入。
結論
以上例子只是通過簡單的效能指標來觀察系統運行狀態,對於一個複雜的系統還需要更多的效能指標資料來分析系統是否運行良好,比如可以檢查系統是否存在記憶體流失,網路速度是否夠快等。一般的系統調優很多都是在出了問題後,憑經驗對照系統的效能表現來進行,很多時候可能會花費很多的時間才能定位的真正的效能瓶頸,藉助工具之後,可以直觀的對整個系統的各個部分進行監控,一旦出現問題,可以及時的警示並能迅速定位問題解決問題。