,現在越來越多人使用了。面對 LoadRunner 高昂的價格,免費的 jmeter 真的是讓我們很是感動" name="description" />

jmeter資源監控器開發——進入jmeter的源碼世界

發表于:2009-09-25來源:作者:點擊數: 標簽:jmeterJMeterJmeter監控器源碼
jmeter MI LY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,現在越來越多人使用了。面對 LoadRunner 高昂的價格,免費的 jmeter 真的是讓我們很是感動

jmeterMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,現在越來越多人使用了。面對LoadRunner高昂的價格,免費的jmeter真的是讓我們很是感動啊。眼淚嘩嘩地。
于是乎現在關于jmeter應用的各種入門教程啊,手冊翻譯啊,技巧集錦什么的,也越來越多了。不過大家可能感受最想要而又要不到的是資源監控,比如windows、linuxcpu,memory等。其實有些高手已經自己開發jmeterplugin用于監控了,但是似乎目前還沒有人share出來,這些高手呢,相信不會是本文的主要讀者了。
日前接受了任務,希望能用jmeter來做一些性能測試。少不得就要面對jmeter缺乏資源監控的問題:有個監視器,但只能利用tomcatstatus頁監視jvm的內存和線程情況,功能單薄得就像霓裳仙子的那件衣服,馬上就要露點了。
看了一下jmeter監視器的實現思路,是解析tomcatmanagestatusxml文件來獲得數據,再展現到jmeter的面板上。于是想到,如果通過修改監視器代碼來解析和展現自己想要的內容,再實現動態的更新服務器上的xml文件——獲取到資源數據寫進去,這樣jmeter不就可以做到監控各種服務器了么?
好,那么就先下手分析jmeter的監控器代碼。查了jmeter的開發手冊,監視器代碼沒有跟其它組件一起,而是單獨的monitor代碼。源碼分析簡述如下:

監控器代碼src\monitor\components\org\apache\jmeter
文件:
\monitor\util
       MemoryBenchmark.java
       Stats.java
\visualizers
       MonitorAclearcase/" target="_blank" >ccumModel.java
       MonitorGraph.java
       MonitorGuiListener.java
       MonitorHealthPanel.java
       MonitorHealthVisualizer.java
       MonitorListener.java
       MonitorModel.java
       MonitorPerformancePanel.java
       MonitorStats.java
       MonitorTabPane.java
       ServerPanel.java

Stats.java:計算解析得到的參數
public static int calculateLoad(Status stat)
public static int calculateStatus(Status stat)
public static int calculateMemoryLoad(Status stat)
public static int calculateThreadLoad(Status stat)

MonitorPerformancePanel.java:監視器面板上的信息

MonitorStats.java:監視器輸入數據
       private static final String HEALTH = "stats.health";
       private static final String LOAD = "stats.load";
       private static final String CPULOAD = "stats.cpuload";
       private static final String MEMLOAD = "stats.memload";
       private static final String THREADLOAD = "stats.threadload";
斜體字部分是jmeter棄置不用的了,原因也寫在MonitorGraph.java的注釋里:”TODO is this needed? It's never read“老外就是tmd能扯啊~

MonitorModel.java:生成數據模型,繼承自MonitorStats

MonitorGraph.java:圖像繪制
private void drawSample(int x, MonitorModel model, Graphics g, MonitorModel last)

MemoryBenchmark.java:數據基準
                            MonitorStats mstats = new MonitorStats(Stats.calculateStatus(st), Stats.calculateLoad(st), Stats.calculateCpuLoad(st), Stats
                                          .calculateMemoryLoad(st), Stats.calculateThreadLoad(st), "localhost", "8080", "http", System
                                          .currentTimeMillis());
                            MonitorModel monmodel = new MonitorModel(mstats);
                            objs.add(monmodel);

MonitorAccumModel.java:監視器數據操作相關


圖片:src\core\org\apache\jmeter\images
資源文件(多語言):src\core\org\apache\jmeter\resources

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97