程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> 使用ITCAM for Websphere對應用問題進行深入分析和診斷

使用ITCAM for Websphere對應用問題進行深入分析和診斷

編輯:WebSphere

引言

當前對基於 Java EE 應用問題的識別、隔離、診斷和修復是一件挺麻煩的事情,雖然在應用上線前,我們經過了嚴格的功能和性能測試,並通過嚴格的編碼規范來保證應用的質量,但是經常會遇到上線之後一段時間內,應用系統總是處於不穩定的狀態,然後又經過一段時間的緩慢分析才能發現一些應用開發中的問題,最後再修復它。除此之外,大多數應用都在其生命周期內會產生一些問題,而這些問題大多是偶發事件,經常會讓維護和開發人員頭疼不已,往往會消耗用戶一些費用請技術專家去解決,耗時、耗力,而且知識也不能得到有效的積累。

下面,我們就圍繞這類問題,通過 IBM Tivoli Composite Application Manager for WebSphere(以下簡稱 ITCAM for WebSphere)來說明如何使用 ITCAM for WebSphere 來快速發現、定位和解決應用中的問題。需要聲明的是,這裡探討的主要是和應用相關的問題,而對於中間件,例如 Websphere 本身的性能調優不在這篇文章的討論范圍內。

說明:ITCAM for WebSphere 是 IBM 提供的一個專門為管理、分析和診斷復合應用問題而設計的管理、分析軟件,它能夠幫助用戶快速定位性能瓶頸,發現引起應用問題的代碼和服務器資源方面的錯誤和問題,從而保障應用順暢運行。

應用問題分析和診斷的方法

在介紹使用 ITCAM for WebSphere 進行應用分析前,我們先來看看應用問題分析和診斷的方法,並會對它們進行一些比較。

應用問題分析和診斷的方法有多種,根據側重點各有不同,通常有以下幾種方法:

比較 Java 對象

這種方法通常是在 Java EE 應用發生問題後用來分析 Java core 等文件的。通過 Core Dump 出來的 java 對象信息的對照比較,來查看哪些對象在特定時間有異常的增長和資源的消耗。據此來發現程序開發中的問題,或者找到運行期間的瓶頸點來進行優化。

優點:WebSphere 的技術專家比較常用這種分析方法。

缺點:這種方法分析的過程比較復雜,需要較高的專業知識,另外這種方式主要適合事後分析。

分析正在運行的掛起請求以及與這個請求相關的 java 的堆棧對象和方法

這種方法一般在 Java EE 應用問題發生的當時非常有效,可以捕獲到當時發生的請求,以及這種請求的調用層次關系來追蹤到某個類的某個方法。

優點:分析在線的應用問題最有效。

缺點:能夠進行在線分析的工具比較少,分析工具本身有對中間件的資源消耗。

設置告警,通過分析在告警產生時(比如應用緩慢或者異常)請求的調用關系和 java 堆棧的對象以及方法來診斷問題發生的根本原因。通常設置告警只是起到警告的作用,所以為了有效地分析問題發生時的情況,這種方法要求在告警的同時收集詳細的應用現場信息,包括從某個請求進入,一層層的信息鑽取,一直到最底層的方法調用

優點:

這種方法只對發生問題的程序詳細信息進行收集,所以不會產生大量的垃圾信息(應用正常運行時的程序調用關系一般不會關注,正常情況下,只關注交易和響應時間以及 WebSphere 的資源和可用性狀況),方便進行快速的分析診斷。

這種方法對系統性能的消耗最低。因為要獲取程序代碼級別的監控,一定要開啟高級別的監控等級,以獲取非常深入的程序數據,所以對系統資源的消耗比較大,給生產環境造成一定的壓力。所以,如果采用這種方式,則大大降低了系統資源的消耗,只在有問題發生時收集程序級別的數據,保護了 WebSphere 服務器。

因為設置了告警,當應用有問題發生時會通知到管理人員。不用長期守護監控的信息。從而提高了管理人員的工作效率。

缺點:這類分析方法需要用戶設置比較准確的閥值條件,要對應用的總體狀況有一定的了解才能設置有效的閥值。另外由於涉及動態調整監控級別,只有少數一些分析工具(例如 ITCAM for WebSphere)能夠實現。

通過收集歷史數據進行分析,通過詳細的報表數據去分析 Java EE 問題。

優點:最常見、最容易獲得的分析方法。

缺點:這類分析方法缺乏時效性,且資源消耗過高。

通常對於用戶來講,第 2、3 兩類分析方法最為有效,但是要求進行診斷、分析的工具有足夠的功能去支持這種實時的詳細數據的獲取。ITCAM for WebSphere 具備上述 4 種分析的方法,下面通過介紹使用第 2、3 兩種方式來說明如何進行應用問題的分析和診斷。

用 ITCAM 進行應用問題的分析診斷

ITCAM for WebSphere 涵蓋了上述幾種分析方法,側重於從應用的角度出發去分析問題,它是從應用交易緩慢或者異常這個信息出發點開始,通過層層的應用交易的分解、鑽取來分析問題,最終發現導致應用問題的程序代碼。以下著重從 Trap 告警和在線分析兩種方式來介紹 ITCAM for WebSphere 進行問題分析和診斷的詳細過程。

通過設置 Trap 來進行分析診斷

通常理想的問題分析過程應該從“應用”出發,而不是從“日志”出發。通過 ITCAM 設置例如“正在運行的應用響應時間緩慢”、“運行完畢的交易響應時間緩慢”、“JVM CPU 使用率過高”、“應用等待時間過長”等 Trap 開始。

圖 1. 選擇 Trap 類型為“應用”

在開始點,也可以從“系統”出發,設置如下圖 2 所示。

圖 2. 選擇 Trap 類型為“系統資源”

其中每種 Trap 類型對應的設置選項是不同的,對於“以應用響應時間”為出發點的 Trap,可以通過以下過程設置:

第 1 步,設置 Trap 的類型,下圖 3 以某個應用請求駐留時間為例。說明當某個請求發出後在規定的時間內還沒有返回請求時則進行告警。

圖 3. 選擇按照應用的“駐留時間”為 Trap

第 2 步,設置告警的條件。下圖 4 告警的條件是當正在執行的請求超過 15 秒則進行告警。

圖 4. 設置閥值

第 3 步,設置告警後采取的動作。下圖 5 告警後 ITCAM 要求 Agent(監控代理)進行 Method Trace,以便捕獲當時的請求狀況,作為詳細分析使用,采用 Method Trace 可以將問題分析到代碼級別。

圖 5. 設置超過閥值時采取的“動作”

第 4 步,給這個 Trap 設置一個名稱,並把此策略賦予某個 Websphere 實例。

圖 6. 設置 Trap 名稱

通過以上方式,ITCAM 就設定了可以查看到方法級別的監控。但是,因為有些 Trap 要達到方法、代碼級別的監控需要 ITCAM 監控級別設置為最高 Level3,然而在 Level3 下會消耗 Websphere 本身的一些資源,所以 ITCAM 配置了一個特殊的 Trap —— Misbehaving Transaction 來實現監控級別的動態調整,如下圖。這種 Trap 只要求 ITCAM 的監控級別設置為 Level2,在運行監控的過程中一旦應用發生問題激活了此 Trap,這個 Trap 就動態將監控級別調整到 Level3,收集當前的環境和應用請求以及方法調用的詳細信息,當這些有用的信息收集完畢後,系統自動將監控級別調整到 Level2,在整個動態調整的過程中,不需要重啟 WAS 服務器。

圖 7. 設置“Misbehaving Transaction”Trap

圖 8. 設置“Misbehaving Transaction”閥值

圖 9. 設置“Misbehaving Transaction”發生後采取的動作

上面介紹了如何設置代碼級別的分析,下面來看看分析過程:

當應用響應慢時,觸發上面設置的 Trap,下圖就是條件觸發的 Trap 記錄信息。

圖 10. 查看 Trap 信息

通過點擊 Action Taken,鑽取這個告警,發現下圖所示這是一個入口為 servlet 請求調用,耗時 89ms。

圖 11. 鑽取 Trap 信息

進一步點擊鑽取,這個 Servlet 調用了 doPost 方法,耗時 75ms。

圖 12. 繼續鑽取

一步步地點擊鑽取,ITCAM 會將此次應用請求過程中緩慢的步驟用顏色標識出來,方便我們進行分析診斷,讓我們更關注問題可能發生的調用,而不是全部應用。

圖 13. 通過繼續鑽取發現請求“processRequest”調用最消耗資源

圖 14. 最後定位到產生問題的 java 方法

最後定位出上述這個方法調用消耗了 57ms,是本次應用問題的根本原因。

通過上面的分析過程,可以看到 ITCAM 對於應用問題的分析、診斷過程是非常方便的,它首先是從應用的角度判斷出系統出現了問題,進而收集到詳細信息,然後發出告警。之後維護和開發人員能夠通過鑽取方式一步步的分析當時的情況,快速找到問題發生時與之相關的類和方法,從而找到應用問題所在。

注:通過 ITCAM 的監控可以監控到最底層的任何類型的調用,比如下圖所示最後監控到一個 sql 語句。

圖 15. 通過 ITCAM 可以查看到其它底層調用,例如 sql 語句

另外,可以通過 FlowView 的方式看到整個調用的全部層次,ITCAM 會將每次調用的入口和出口的時間列舉出來,對於那些可疑的調用,ITCAM 會以顏色加深來標示。

圖 16. 通過 FlowView 查看完整的調用關系

分析掛起的在線請求

上面介紹了如何設置 Trap 進行應用問題分析的方法。通常當應用掛起時采用 In-Flight 更容易更快速發現並解決應用的問題。

當有掛起的請求時,在菜單選擇 In-Flight Request。

圖 17. 通過 In-Flight 查看正在執行的請求

然後點擊 Thread/TaskId,然後按照 Trap 分析的方法層層分析定位到方法。

圖 18. 通過 Method Trace 查看調用細節,定位到程序方法

按照上圖所示,在圖示的左上角選擇 Method/Component Trace,即可以按照第一種方式的分析過程進行分析。

總結

按照上述兩種方法,當應用發生異常的時候,通過 ITCAM 收集現場狀況進行深入地分析,有效地獲取了數據,管理人員不需要全天候去監控應用的狀況,同時通過 ITCAM 有效地降低了分析的難度,提高了應用深入分析的效率,讓普通開發人員或者維護人員都能進行深入的問題分析,而不僅僅限於專家。ITCAM 能幫助應用管理者或者開發人員從應用請求點出發,一層層剝繭似的方式解析應用程序,最終到達問題的根源位置。

ITCAM for Websphere 是一個強大的基於 Websphere 的 J2EE 應用問題分析和診斷平台,而對於非 Websphere 的環境,同樣有 ITCAM for J2EE 來進行深入的分析和診斷,其過程和 ITCAM for Websphere 是一致的。這樣通過 ITCAM 能夠涵蓋完整的 J2EE 的分析和處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved