利用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接口的压测,长连接的压测等)

记录下,免得下次还得重新搜怎么做

时间: 2024-10-08 15:33:58

利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试的相关文章

【接口】接口开发+SpringBoot

一.接口的简单介绍 1.什么是接口:接口及服务: 2.接口的分类:(1)系统的内部接口;(2)第三方的外部接口; 3.简述接口原理图: 4.接口协议:是指客户端跟服务器之间或者接口与接口间进行的通讯时必须要遵从的约定和要求; 互联网上 应用最为广泛的一种网络协议--http协议(超文本传输协议),因此最常见的就是http协议的接口.(webservice接口,dubbo接口等都是基于http协议) 5.http协议的组成 请求: 1.url统一资源定位符(接口地址) 2.请求方式(get,pos

Dubbo 接口 与http 接口、Pegasus接口

原文链接:https://www.cnblogs.com/yuanyuan2017/p/11430152.html 面试的时候会被问到 除了http  https 请求外 有接触了解到其他的接口么? 一,什么是Dubbo 接口 Dubbo 接口是阿里巴巴开源的致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,dubbo框架告别了传统的web service的服务模式,进而改用provider和consumer模式进行服务.为什么是高性能的呢?可以在某个服务器集群中提供单一

利用JMeter的beanshell进行接口的加密处理

最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进度的需要,选择的做法是:让开发写个加密处理生成请求报文的代码,然后每次测试发送一次请求都用eclipse跑一遍该代码,测试数据的修改也是在代码中变更.这样跑一轮测试下来,测试同事都反映太累了. jmeter中的BeanShell,可以用来调用我们的工具类对数据进行处理,然后再进行相关的请求.自己刚好

java类为什么是单继承。类的继承,实现接口。

java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ System.out.println("父类1"); } } class Fulei2{ public void show(){ System.out.println("父类2"); } } class Zilei extends fulei1,fulei2{ public

jmeter测试dubbo接口

本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文件为: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation=

jmeter java性能测试

本篇文章主要讲解jmeter如何测试java请求,以项目中某个接口为例,请求数据为post,返回也为post 1:新建maven工程,pom文件为 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/

利用Hadoop提供的RPC API实现简单的RPC程序

[toc] 利用Hadoop提供的RPC API实现简单的RPC程序 在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例. 项目结构 为了方便操作,所有的代码都放在本地一个项目中,实际上,完全可以将代码放在不同的服务器上,这是RPC的概念,这里就不做过多的介绍.项目结构如下: rpc/ ├── HelloServiceImpl.java ├── IHelloService.java ├── RPCClientDriver

java之rpc/orm

Netty线程模型 其中ChannelPiepline的设计模型采用的是Handler组成的责任链模型 blocking I/O 阻塞nonblocking I/O 非阻塞I/O multiplexing (select and poll) 多路复用signal driven I/O (SIGIO) 信号驱动asynchronous I/O (the POSIX aio_functions) 异步 例子: 假设某银行只有10个职员.该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟)

JAVA学习第十四课(接口:implements)

接口: 我们知道抽象类中可以定义抽象方法,也可以定义非抽象方法,当一个抽象类中的方法都是抽象方法的时候,我们就可以定义另一种表现方式:接口(interface),所以接口是一种特殊的抽象类 接口的出现将"多继承"通过另一种形式表示出来,即"多实现". 注意:接口的定义不是class,而是interface,当然最后编译时还是class文件 interface Demo { abstract void show(); abstract void show1(); }