利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试
建立JAVA项目
建立maven项目,加入Jmeter所需要的JAR包依赖。
POM.xml 加入如下:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_components -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_components</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/jorphan -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>jorphan</artifactId>
<version>3.2</version>
</dependency>
实现JavaSamplerClient 接口
/**
* jmeter测试类
*
* @author hejb 2017.09.04
*
*/
public class AppForJmeter implements JavaSamplerClient { /**
* 设置可用参数及的默认值
*/
public Arguments getDefaultParameters() {
System.out.println("i'm start");
return null;
} /**
* 开始测试,从arg0参数可以获得参数值;
*/
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult();
sr.sampleStart();// jmeter 开始统计响应时间标记
sr.setResponseData("test", null);
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true);
sr.sampleEnd();// jmeter 结束统计响应时间标记
return sr;
} /**
* 每个线程测试前执行一次,做一些初始化工作
*/
public void setupTest(JavaSamplerContext arg0) {
System.out.println("set Up Test");
} /**
* 测试结束时调用;
*/
public void teardownTest(JavaSamplerContext arg0) {
System.out.println("down..."); } public static void main(String[] args) {
System.out.println("test in main");
}
}
ps: 记得添加main方法
导出JAR包
把项目的JAR包导出

加入JAR包
\apache-jmeter-3.2\lib\ext

添加线程组

加入JAVA请求配置

可以找到刚刚的那个JAVA类

添加察看结果树
添加察看结果树,然后运行,可以看到JAVA中输出的内容

加入聚合报告

传入JAVA接受参数参数
传入参数,并获取进行处理
String message = "test";
/**
* 设置可用参数及的默认值
*/
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("message", "hello world!");
return arguments;
}
在RUN中进行获取值
/**
* 开始测试,从arg0参数可以获得参数值;
*/
public SampleResult runTest(JavaSamplerContext arg0) {
message = arg0.getParameter("message");
SampleResult sr = new SampleResult();
sr.sampleStart();// jmeter 开始统计响应时间标记
sr.setResponseData("test:" + message, null);
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sr.sampleEnd();// jmeter 结束统计响应时间标记
return sr;
}
记得每次修改需要重新导出JAR包,放入到ext下,然后重新启动jemeter,能看到参数设置

收到参数

性能报告,

这样就可以用JAVA去压测RPC接口了,(如dubbo接口的压测,长连接的压测等)
记录下,免得下次还得重新搜怎么做
利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试的更多相关文章
- python、java大作战,python测试dubbo接口
很多小伙伴都反映公司要求测dubbo(dubbo是一个java的分布式开源框架)接口,不会写java代码,怎么测,能不能用python来调dubbo接口.当然是可以的了,最近研究了一下,很简单,分享给 ...
- 利用JMeter的beanshell进行接口的加密处理
最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...
- 利用jmeter对WebRTC应用进行压力测试(java)
利用jmeter对WebRTC应用进行压力测试(java) 说明:WebRTC是一款开源的多人即时视频API,与一般的http请求不同,webrtc应用实际压力主要是码流 最近负责了一个WebRTC的 ...
- java类为什么是单继承。类的继承,实现接口。
java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...
- Jmeter实现dubbo接口压测案例
当前项目中重构了消息服务,需要对消息服务接口做性能压测,评估消息服务的性能情况 通过和开发对接,目前消息服务是通过dubbo接口对内提供服务,所以才有了这边文章的记录 最初的压测这个dubbo接口有三 ...
- Jmeter之模拟文件上传、下载接口操作
上周群里有位同学,问我用jmeter怎么上传文件?因好久没用jmeter了,顺便自己也复习下,现整理出来和大家分享 一.准备工作: 上传接口一个(自行开发解决了) 下载接口 ps:没有困难创造困难也要 ...
- 【Other】最近在研究的, Java/Springboot/RPC/JPA等
我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索 Dubbo ...
- Java高效编程之三【类和接口】
本部分包含的一些指导原则,可以帮助哦我们更好滴利用这些语言元素,以便让设计出来的类更加有用.健壮和灵活. 十二.使类和成员的访问能力最小化 三个关键词访问修饰符:private(私有的=类级别的).未 ...
- jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...
随机推荐
- 一种轻便且灵活的js模板的思路
一种轻便且灵活的js模板的思路 项目地址:https://github.com/j20041426/template 思路背景 在Vue.React.Angular等大前端框架异军突起的今天,写前端时 ...
- matlab怎么查看已安装哪些工具箱和…
问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:
- java垃圾回收过程
对于年轻代,刚开始创建的对象都是放置在eden区的,而将年轻代分成3个部分,主要是为了生命周期短的对象尽量留在年轻代.当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survio ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
- Java中parse()和valueOf(),toString()的区别
1.parse()是SimpleDateFomat里面的方法,你说的应该是parseInt()或parsefloat()这种方法吧, 顾名思义 比如说parseInt()就是把String类型转化为i ...
- macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目
一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...
- HTML5 — Wed Storage简单示例
一.Wed Storage 概述 Wed Storage功能:在Wed上储存数据的功能,这里的储存是针对客户端本地而言的. 具体分为两种: sessionStorage,将数据保存在session对象 ...
- NoSession问题
第一种原因: no Session 错误 dao层中get方法换成了load方法,或者其他原因引起. 原因分析: 真正用到代理对象的时候,代理对象没有值,并且session的生命周期已经走完了. 解 ...
- JS数组操作中的经典算法
冒泡排序<script type="text/javascript"> var arr = [3,7,6,2,1,5]; 定义一个交换使用的中间变量var temp = ...
- U3D学习入门
U3D最重要的五大界面 第一:场景(Sence),构建游戏的地方: 第二:层级(Hierarchy),场景中的游戏对象都列在这里. 第三:检测面板(Inspector),当前选中的资源或对象的设置,是 ...