您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
jmeter資源監(jiān)控器開發(fā)??進入jmeter的源碼世界
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2013/3/15 14:51:24 ] 推薦標簽:

現(xiàn)在越來越多人使用了。面對LoadRunner高昂的價格,免費的jmeter真的是讓我們很是感動啊。眼淚嘩嘩地。

于是乎現(xiàn)在關于jmeter應用的各種入門教程啊,手冊翻譯啊,技巧集錦什么的,也越來越多了。不過大家可能感受想要而又要不到的是資源監(jiān)控,比如windows、linux的cpu,memory等。其實有些高手已經(jīng)自己開發(fā)了jmeter的plugin用于監(jiān)控了,但是似乎目前還沒有人share出來,這些高手呢,相信不會是本文的主要讀者了。
日前接受了任務,希望能用jmeter來做一些性能測試。少不得要面對jmeter缺乏資源監(jiān)控的問題:有個監(jiān)視器,但只能利用tomcat的status頁監(jiān)視jvm的內(nèi)存和線程情況,功能單薄得像霓裳仙子的那件衣服,馬上要露點了。
看了一下jmeter監(jiān)視器的實現(xiàn)思路,是解析tomcat的manage上status的xml文件來獲得數(shù)據(jù),再展現(xiàn)到jmeter的面板上。于是想到,如果通過修改監(jiān)視器代碼來解析和展現(xiàn)自己想要的內(nèi)容,再實現(xiàn)動態(tài)的更新服務器上的xml文件——獲取到資源數(shù)據(jù)寫進去,這樣jmeter不可以做到監(jiān)控各種服務器了么?
好,那么先下手分析jmeter的監(jiān)控器代碼。查了jmeter的開發(fā)手冊,監(jiān)視器代碼沒有跟其它組件一起,而是單獨的monitor代碼。源碼分析簡述如下:

監(jiān)控器代碼srcmonitorcomponentsorgapachejmeter
文件:
monitorutil
       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:計算解析得到的參數(shù)
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:監(jiān)視器面板上的信息

MonitorStats.java:監(jiān)視器輸入數(shù)據(jù)
       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:生成數(shù)據(jù)模型,繼承自MonitorStats

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

MemoryBenchmark.java:數(shù)據(jù)基準
                            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:監(jiān)視器數(shù)據(jù)操作相關


圖片:srccoreorgapachejmeterimages
資源文件(多語言):srccoreorgapachejmeter esources

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd