1. 程式人生 > >java效能監控工具MoSKito學習--概念解釋

java效能監控工具MoSKito學習--概念解釋

2 MoSKito 的概念
>Producers, Stats and Values 生產者,統計和值
 >>Producers 生產者
 >>Stats 統計
 >>StatValues 統計值
 >>Values 值
>Thresholds 閾值
>Accumulators 收集器
 >>Saving your app's memory 節省你應用的記憶體
>Journeys 歷程
生產者,統計和值
MoSKito的核心是生產者,統計和值。他們之間的冠以是一條直線,彼此獲取通過如下的形式。
生產者-----》統計---------》統計值---------》值
生產者
生產統計,又叫做統計。統計可以是一切,所以生產者也可以是一切。
     注意:Producer(生產者)是一段程式碼,當然也是統計資料的來源(這也許是一個類,一個方法,一個服務,一個小服務程式或者任何其他產生統計資料的資源)並在資源變的活躍時統計一次。
生產者可能統計資料,依賴:
》執行表現(執行緒,記憶體,快取,儲存,服務,等等)或者
》業務(註冊,支付,轉賬,同伴的表現,線上使用者數,等等)
例如:
所有下面這些可能是生產者:
1)a business Service 一個業務服務
2) an HttpFilter or HttpServlet 一個http攔截器或者http服務
3) a Jersey Resource 一個 Jersey 資源
4) Mail Gateway 電子郵件閘道器
5)the interface to an external payment(or whatever)provider 給國外支付提供者的一個介面
生產者是MoSKito所有資訊的來源。收集器和閾值都是基於生產者產生的值而來的。
統計
代表一個單一用例的統計,也能夠對整個生產者完成統計。
例如:
如果你用一個HttpFilter(過濾器)監視URLs,那麼關聯的生產者將會持有一個統計物件:
》它見過的每一個URL
》統計所有的URLs
如果你監視一個service(服務),那麼每一個服務方法都將會有一個對應的統計物件,並且一個統計物件會作為一個整體來表示服務。
統計值
組成統計資料的值來自於合適的統計物件。
例如:
服務統計擁有請求的數量,總數,最小,最大,最近和平均的請求持續時間,請求併發數等等。
快取統計擁有請求數量,命中數和命中比例
記憶體統計擁有空閒的,使用率和可用的記憶體資訊
數量統計包含了。。數量。
更多資訊,參考Built-in Stats Implementation Reference.內建統計實現的引用
值(values)
最後,每一個統計值是一個多維的統計存在於間隔的上下文中。每一個間隔是一個獲取測量資料的維度。你可以認為統計值是一個HashMap中的值集,而間隔是key集合。而且每一個值實際上包含了(至少)兩組數,一組是最近完成的間隔和當前執行的間隔(interval)。
Thresholds閾值
在你的應用內部,一些生產者也許比其他生產者更重要。為了保留一個警戒線在他們身上,我們建立了閾值。
閾值連續監視一個單一的生產者並且給出一個訊號當生產者的效能改變時。
 注意:一個閾值標記了一個生產者效能表現的邊界。當生產者走過了(上或者下)這個邊界,閾值會改變狀態,這樣讓你知道這個生產者需要被注意了。
簡而言之,閾值就是一個邊界守衛:當生產者違反了你給它設定的邊界時,他們給出訊號。
閾值也能夠和交通燈對比。他們讓你知道越過邊界的值通過使用不同的顏色。黃色意味著剛剛越界,桔紅色意味著大問題等等。比方說紫色表示結束,也就是表示全部fallout。
閾值使得你能夠在一些問題影響到你整個應用之前面對。
例如:
讓我們看看我們應用的session數。
所以我們做的是:我們建立一個閾值基於生產者的Session數,也就是說:
“好吧,閾值,如果載入是從0到500個session數,轉為綠色。如果session數是500到700,轉為黃色。700到800,轉為桔紅色。超過900,則轉為紅色”。
所以,只要看一眼在閾值,就足以知道事情是好還是壞。

一個閾值是對監視器設定的一個引數;閾值集合給出了一個完整圖片關於此時你的應用效能是怎麼樣的。如圖threshold_simple.png。


日誌和通知也是閾值可用的選項。想知道更多,參考在MoSKito-Inspect User Guide 使用者指導模組的閾值部分。
Accumulators收集
通過上面的學習,每一個狀態值對於多個間隔會有多個值,但是在一次只會有一個值(一個間隔對應一個值)。
例如:
如果你只關心生產者的Session數,那通過當前狀態值,可以得到Session的狀態。這個狀態值會有一個獨立值對每一個監視間隔,就像在一分鐘間隔內有25個session數,一個小時間隔有35個session數。不管怎麼樣,他都將會有一個準確的唯一值對應每一個配置的間隔。


節約你的應用記憶體
只儲存一個值的主要原因就是節省記憶體,因為MoSKito-Essential有全部值。如果我們隊每一個值都額外新增200個歷史值(也就是:不僅僅儲存最新的值,而是200個之前的值,如果當前是按分鐘數來間隔,那也就是200分鐘的歷史值),那麼MoSkito佔用的記憶體將會暴增。
不用在記憶體中直接儲存所有效能資料,你可以通過連線MoSKito-Central並從中收集資料。
然而,不時,想對資料直接分析並得到他的視覺化表現。典型的場景是看session數量是怎麼樣發展超時的,通過一個網站使用的試圖表現可以看到。這就是收集器的作用。
 一個收集器是一個值收集連線對於給出的間隔,生產者,狀態和值。
基本上來說,收集器新增它自己到Producer/Stat/StatValue/Interval與其結合並統計(聚集和儲存)資料,通過這個生產者收集的。這些資料在之後可以用於產生瞬時評論,例如,在形成線性圖。

螢幕截圖SessionCount.png:最近兩天的Session數


但是收集器可以做的更多。首先,他們可以被結合生成一個更大的圖關於應用內部不同值的關聯資訊。

螢幕截圖ThreadStates.png:不同狀態下的執行緒


收集器也構建了基礎圖在MoSKito UI(連結)和MoSKito-Control
想知道更多關於使用收集器,請參考MoSKito-WebUI管理的收集器模組部分。
Journeys(歷程)
歷程允許記錄使用者的行為在應用內部發生時產生的呼叫/步驟。歷程展示了一個使用者在使用應用時用到的方法/函式/服務/資源。
簡單來說,一個歷程是將任意使用者的行為轉變為一個開發者或者應用管理者的語言。
例如:
當一個使用者單擊一個連結載入一個新的頁面,在web應用內部這個單擊會初始化一系列的系統函式。這完整的一步步操作和呼叫,伴隨著他們的時間戳,就是你得到的一個歷程。
歷程,是MoSKito的一部分,和生產者繫結。這樣,當一個系統呼叫完成在一個存在的MoSkito生產者時,會新增一條記錄線到一個歷程。歷程在很多情況下都有幫助。下面的例子就是最典型的。
讓我們假設一個確定的使用者行為會使得系統花費很長的時間去完成。這樣的延遲意味著系統方法的呼叫之一花費了額外的時間。
只要我們將這個使用者的行為記錄為一個歷程,我們可以看到證而過系統隨著初始化完成的步驟和呼叫(隨著他們的時間戳),並且很容易定位是誰花費了大部分時間。這些資訊是進一步提高和優化的指導圖。

如圖Journeys_Overview.png。


 歷程也可以選擇是實時還是使用者歷程的生命週期分析,想了解更多,請參考MoSKito-WebUI管理模組的歷程部分。
到此關於MoSKito Concepts部分就結束了,接下來我們看Start Working,step by step。一步一步開始工作。