WebSphere 應用服務器性能調優工具4


在圖形化監控頁面中,由於應用服務器和代理服務器以及隨需應變路由器的性能參數不同,所以他們所顯示的性能曲線也有所不同。應用服務器的性能曲線包括:Servlet Response Time, Transaction Response Time, EJB Response Time, Jdbc Response Time, Servlet Throughput, Transaction Throughput, EJB Throughput, Jdbc Throughput, Concurrency,WebContainer Thread Pool, Http Session, CPU usage Java Heap。代理服務器和隨需應變路由器的性能曲線包括:Proxy Server Response Time, App Server Response Time, Proxy Server throughput, App Server throughput, Local Throughput, Active Connection, Catch Hit, Failed Request, CPU usage Java Heap

除去這些性能曲線外,在圖形化監控頁面中還有一個重要的診斷指標,那就是警告Alert)。服務器的這些性能指標在觸發一定的規則之後,會發生警報,這些警報會顯示在圖形化監控頁面的 Alert 部分。而其觸發的規則是可以自定義編輯的,具體規則的編輯和設置我們將在後面的規則引擎章節中進行詳細介紹。默認的警告類型根據服務器類型不同也不盡相同。應用服務器的性能曲線包括:Servlet, Transaction, EJB, ConnPool, JcalPool, RunTime, ThreadPool Session。代理服務器和隨需應變路由器的性能曲線包括:RunTime, ThreadPool Pool。這些警告信息能幫助您迅速確定哪些性能指標已經到達我們設置的閥值,從而達到提前預警的目的。

13. 圖形化監控頁面—— Alert


第三層監控頁面 ——詳細數據頁面

詳細數據頁面包含整個監控系統的性能數據信息,前面介紹的兩層監控視圖都是基於這些數據信息而產生的。在詳細數據頁面中,我們把這些數據信息進行了分類和聚類,使它們以更易讀地角度展現在用戶面前,為問題分析提供更豐富的數據支持。

我們可以通過視圖模塊下面的標籤進入到每一個數據視圖中,如下圖所示,其中包括:Correlation, Statistic, Response Time, Throughput, Concurrency, Alert, Servlet, Transaction, Proxy, EJB, JdbcConnectionPool, JcaConnectionPool, Runtime, Session ThreadPool

14. 詳細數據頁面


您還可以通過點擊圖形化監控頁面中曲線上的節點,直接進入對應時間節點的數據集中,這一功能可以讓您方便的找到問題發生的時候的性能數據信息。

在詳細數據頁面中,大多數為表格結構,這些表格中以時間節點為順序詳細記錄了各種性能指標的數據信息。如下圖的 RunTime 數據。它記錄了 RunTime 中的 CPU usage, MaxHeapSize, HeapSize UsedHeap 信息。

15. 詳細數據頁面——表格數據


有些頁面中,數據條目具有展開項,意在顯示應用中參與此條性能指標的全部模塊。在這類型的數據中,我們使用不同顏色來表示不同的內容對整體性能指標的貢獻度。這裡以 EJB 性能信息為例,如下圖所示,整個環境的 EJB 響應時間是 12.846ms
吞吐量為 0.217/s. 將此條目展開我們可以看到,應用中一共包含三個 EJB 模塊,其中有一個為紅色,表示它在整個性能指標中貢獻度最大,其他兩個綠色的表示貢獻度次之。在本例中我們可以看到,整個環境的 EJB 消耗全部來自於紅色條目的貢獻,也就是說,另外兩個 EJB 可能並沒有被訪問。

16. 詳細數據頁面——貢獻度


還有一個看上去較為特殊的視圖 —— Correlation,它描述了不同模塊在同一指標上的相關性。紅色表示相關性高,灰色表示相關性低。如下圖所示。

17. 詳細數據頁面——相關性


在數據模塊中還有非常多的信息值得我們去挖掘,這裡由於篇幅限制不在一一敘述。

總之,數據是對環境當時情況的客觀記錄,數據的展現形式是為了便於用戶發現其中的問題,它們都是問題診斷和趨勢分析的基礎。在實際監控過程中,我們應該綜合各種因素,從異常數據入手,利用三層監控模型提前預警,層層深入,找到導致問題產生的根本原因,最終解決問題,確保整個環境的正常運轉。

回頁首

規則引擎

規則引擎是 PTT 工具中的一個重要模塊,它提供了可以自定義規則的功能。您可以在規則編輯器中根據需要定製性能參數的預警值,以及達到預警值之後的動作行為,當然您也可以根據實際情況編寫更為複雜的程序來滿足您的需要。在文章後面我們會詳細介紹規則引擎支持的語法和目前提供的性能指標參數。下圖為規則編輯器。

18. 規則引擎


規則引擎的使用非常簡單,在菜單欄中選擇“Analysis->Edit Rules” 或者在工具欄中點擊“Edit Rules”按鈕即可啟動規則編輯器。如下圖所示。

19. 啟動規則編輯器


規則引擎的語法基於開源規則引擎 Drools,簡單易懂,功能強大,稍有編程背景即可快速上手。我們還提供了大量的預定義規則,覆蓋眾多關鍵性能指標,即使沒有編程基礎,只要對已有規則做簡單修改,即可得到符合自己要求的定製規則。

預定義規則如下:

    如果 Java Heap 使用超過 85%,拋出一個運行時警告。

    如果線程池使用超過 90%,拋出一個線程池警告。

    如果平均 CPU 使用率超過 90%,拋出一個運行時警告。

    如果有 servlet 錯誤發生,拋出一個 servlet 警告。

    如果有 JDBC 連接超時,拋出一個連接警告。

    如果出現超過 1000 prepared statement 被廢棄,拋出一個連接警告。

    如果有線程等待連接,拋出一個連接警告。

    如果發生 JCA 連接錯誤,拋出一個 JCA 警告。

    如果已經無法容納新的 session,拋出一個 session 警告。

    如果有 Thread hung 發生,拋出一個線程池警告。

    如果有交易回滾發生,拋出一個交易警告。

    如果有交易超時發生,拋出一個交易警告。

    如果有代理請求失敗,拋出一個代理警告。

    如果檢測到 servlet 性能下降,拋出一個 servlet 警告。

    如果檢測到 JDBC 性能問題,拋出一個
警告。

接下來我們將通過一段實際代碼來介紹規則語法和如何定義一個規則。下面是預定義規則中關於運行時的一段代碼:

rule "RunTimeEvent"


					when
					

 RunTimeEvent($cpuUsage:cpuUsage,$usedMemory:usedMemory,$maxHeapSize:maxHeapSize); 


					then
					

 String description = ""; 


					if($cpuUsage > 90){ 

   description = description + "[High CPU Usage (>90%)]"; 

   processedData.setCpuWarningMark(true); 

       } 


					if($usedMemory >= $maxHeapSize*0.85){ 


					if(!description.isEmpty()){ 

        description = description + "  |  "; 

       } 

   description = description + "[" + "Used Memory reach to 85% of the max heap size]"; 

   processedData.setHeapWarningMark(true); 

       } 


					if(!description.isEmpty()){ 

       processedData.addAlert(ALERTTYPE_RUNTIME,description,0); 

       } 

 End

RunTimeEvent 是一個 PTT 軟件支持的規則類型,在定義規則時,我們首先要了解想要定義的規則中的性能參數來自哪個規則類型。PTT 工具一共提供了 10 種規則類型,涵蓋了 WebSphere Application Server 的各個方面。PTT 工具的幫助中“System Rule”章節有所有規則類型的詳細列表。您也可參考清單 1.

清單 1:規則引擎提供的規則類型及性能參數列表

ConnPoolEvent: 

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註