jmeter资源监控器开发——进入jmeter的源码世界

现在越来越多人使用了。面对LoadRunner高昂的价格,免费的jmeter真的是让我们很是感动啊。眼泪哗哗地。

于是乎现在关于jmeter应用的各种入门教程啊,手册翻译啊,技巧集锦什么的,也越来越多了。不过大家可能感受最想要而又要不到的是资源监控,比如 windows、linux的cpu,memory等。其实有些高手已经自己开发了jmeter的plugin用于监控了,但是似乎目前还没有人 share出来,这些高手呢,相信不会是本文的主要读者了。
日前接受了任务,希望能用jmeter来做一些性能测试。少不得就要面对jmeter缺乏资源监控的问题:有个监视器,但只能利用tomcat的status页监视jvm的内存和线程情况,功能单薄得就像霓裳仙子的那件衣服,马上就要露点了。

看了一下jmeter监视器的实现思路,是解析tomcat的manage上status的xml文件来获得数据,再展现到jmeter的面板上。于是想
到,如果通过修改监视器代码来解析和展现自己想要的内容,再实现动态的更新服务器上的xml文件——获取到资源数据写进去,这样jmeter不就可以做到
监控各种服务器了么?
好,那么就先下手分析jmeter的监控器代码。查了jmeter的开发手册,监视器代码没有跟其它组件一起,而是单独的monitor代码。源码分析简述如下:

监控器代码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:计算解析得到的参数
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:监视器数据操作相关

图片:srccoreorgapachejmeterimages
资源文件(多语言):srccoreorgapachejmeter
esources

时间: 2024-10-13 23:33:10

jmeter资源监控器开发——进入jmeter的源码世界的相关文章

微信小程序_微信小程序开发,小程序源码、案例、教程

原文地址:http://whosmall.com/?post=448 本文标签: 微信小程序 小程序源码案例 小程序项目 小程序源码 微信小程序教程 什么是微信小程序? 微信小程序是微信基于微信平台的一个应用发布平台,微信小程序app开发属于原生app组件提供js接口的开发方式,比混合是app的用户体验更好,仅次于原生应用. 不过微信小程序定位于小,要符合轻量易用无需下载,所以从体积上也是有限制,整个小程序应用体积不能超过1M. 微信小程序的应用场景? 微信小程序的应用场景适用于轻量应用,非强交

SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 这篇博文我们通过spring与Mybatis集成,开发一个简单用户增删改查的Web项目. 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2.下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis/ 3.下载mybatis-spring-1.2.1版:https://repo1.maven.org/maven2/org/m

Java微信公众平台开发模式+自定义按钮源码

首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.doGet返回exhostr,给微信平台. 这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下: import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.ut

Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展,并重新打包文件,替换原有的 jar 文件,满足测试开发自身的需求. 下面以修改 eclipse 默认注释中的 ${date} 和 ${time} 对应的返回样式(如下图所示),进行实例说明. 整个二次开发的过程如下所示: 0.未修改之前,生成注释的日期.时间显示格式如下所示: 1.获取对应的 jar

Android 开发的QQ程序源码

Android 开发的QQ程序源码 网上下载的一款Android 开发的QQ程序源码,其中有大量的注释.项目中有错误不能直接运行,有兴趣的朋友可以下载看下. 下载地址:http://www.devstore.cn/code/info/841.html  运行截图:

firefox os 开发踩地雷游戏源码

踩地雷这游戏在大家生活中应该不陌生吧!咋们八零九零后都基本上玩过这款游戏,这也曾是windows xp上一款标配的单机游戏,想想无聊的时候拿出来玩玩倒是不错,今天推出Firefox os版踩地雷源码,希望给大家学习Firefox os带来帮助! 点击下载:firefox os 开发踩地雷游戏源码 编辑@5狐网 firefox os 开发踩地雷游戏源码

基于ssm框架开发的零食商城源码

很多朋友说要分享一些基于ssm框架开发的项目,在休闲时间搭建和撸一个以ssm框架开发的零食商城源码,详情如下,希望大家能够见解和学习. 首先ssm定义是框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),在开发上前后分离,耦合度小,且开发方便快速,效率较高.大家可以把我分享的项目下载下来二次学习或者开发,同时也可用于毕设. 系统分为前后太两大部分,包含管理员.普通用户权限,具有一系列的包含权限,用户信息,商品信息,订单信息,个人中新,购物车下

门店小程序开发全过程(附源码)

说到微信小程序的创立初衷,线下门店绝对是应用的大场景,也符合小程序"用完即走"的理念.从这一两年的发展来看,多个小程序爆款也出自门店小程序,如周黑鸭.星巴克以及奶茶店小程序等等.门店小程序的研发需求和使用需求都很大,下边我们就具体讲讲门店小程序的应用场景及研发过程. 一.场景 场景化消费的同时,用户可扫描桌上的二维码,快速展现小程序系统 浏览购买小程序提供的线上服务 留存用户,后期可与用户线上互动,增强用户粘性 即:通过线下导流到线上,线上购买服务,线下体验和享受服务,通过小程序完美实

【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 【转】

第一步:创建数据库表 在Navicat下执行如下sql命令创建数据库mybatis和表t_user CREATE DATABASE IF NOT EXISTS mybatis; USE mybatis; create table t_user ( user_id int(11) NOT NULL AUTO_INCREMENT, user_name varchar(20) not null, user_age varchar(20) not null, PRIMARY KEY (user_id)