使用jmeter进行dubbo协议的测试方法

jmeter脚本是作为dubbo消费者

以下为工程主要代码:

package com.one;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.unj.dubbotest.provider.DemoService;

public class TestConsumer  extends AbstractJavaSamplerClient {

    private static String label = "consumer"; 

    private   String ID;

    //dubbo服务地址
    private  String URL;

    private  String VERSION ;

    private  String SERVICE_NAME;   

    private Object object;

     public void init() {
        // 当前应用配置
        ApplicationConfig application = new ApplicationConfig();
        application.setName("hehe_consumer");

        // 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
        // 引用远程服务
        ReferenceConfig  reference = new ReferenceConfig(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
        reference.setApplication(application);
        reference.setId(ID);
        reference.setVersion(VERSION);
        //dubbo服务名
        reference.setInterface(SERVICE_NAME);

        //dubboip地址
        reference.setUrl(URL);

        // 和本地bean一样使用xxxService
        object = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用\
        }

    public void setupTest(){
        //定义测试初始值,setupTest只在测试开始前使用
        System.out.println("setupTest");
    }  

    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
        SampleResult sr = new SampleResult(); ;
        try {
            //获取参数
            ID = arg0.getParameter("ID");
            URL = arg0.getParameter("URL"); 

            VERSION = arg0.getParameter("VERSION");
            SERVICE_NAME = arg0.getParameter("SERVICE_NAME"); 

            //dubbo初始化
            init();

            //jmeter结果对象

            sr.setSampleLabel(label);

            sr.sampleStart(); 

            DemoService demoService = (DemoService)object;
            String hello = demoService.sayHello("tom");

            sr.setResponseCode("00000");
            sr.setResponseMessage(hello);

            sr.setSuccessful(true);
            sr.sampleEnd(); // jmeter 结束统计响应时间标记  

        } catch (Exception e) {
            e.printStackTrace();
            sr.setResponseCode("999");
            sr.setResponseMessage(e.getMessage());
            sr.setSuccessful(false);
        }
        return sr;
    }

    public Arguments getDefaultParameters(){
        //参数定义,显示在前台,也可以不定义
        Arguments params = new Arguments();
        params.addArgument("ID", "");
        params.addArgument("URL", "");
        params.addArgument("VERSION", "");
        params.addArgument("SERVICE_NAME", "");
        return params;
        }  

    public void teardownTest(JavaSamplerContext arg0){
        super.teardownTest(arg0);
    }
}
第一步:右击工程,点击Export标签,选择java文件夹,点击【JAR file】

第二步:输入JAR file 文件路径,点击【Finish】按钮

第三步:导致的jar放置../apache-jmeter-2.13libext目录下

jmeter使用

第一步:打开Jmeter软件

新建线程组

第二步:新建一个Java请求,选择自己编写的测试类,输入参数

第一个参数:这个参数没有特定的规定,名字取得有意义一些,比如:ID

第二个参数:输入dubbo的服务地址:dubbo://127.0.0.1:20880(是自己项目的具体情况)

第三个参数:输入dubbo的版本号:1.0.0

第四个参数:输入dubbo服务名称:com.unj.dubbotest.provider.DemoService

第三步:新建一个监听器

第四步:Jmeter导入依赖包,(包的目录是在工程(consumer)的lib下)

点击测试计划,右下方点击【浏览】按钮,选择工程下的lib目录,重启Jmeter

第五步:执行Jmeter,查看结果

原文地址:https://www.cnblogs.com/xqtesting/p/8258648.html

时间: 2024-10-16 02:10:39

使用jmeter进行dubbo协议的测试方法的相关文章

Jmeter实现WebSocket协议的接口和性能测试方法

WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.在此WebSocket 协议中,为我们实现即时服务带来了两大好处: 1. Header  互相沟通的Header是很小的-大概只有 2 Bytes 2. Server Push 下面是客户端浏览器请求和服务器回应 浏览器请求 GET /demo HTTP/

jmeter进行dubbo接口测试

最近工作中接到一个需求,需要对一个MQ消息队列进行性能测试,测试其消费能力,开发提供了一个dubbo服务来供我调用发送消息. 这篇博客,介绍下如何利用jmeter来测试dubbo接口,并进行性能测试... 一.Dubbo简介 dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.其核心部分包含如下几点: 1.远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式: 2.集群容错:提供基

11. Dubbo原理解析-注册中心之基于dubbo协议的接口介绍

服务注册与发现的中心,服务的提供者将服务发布到注册中心,服务的使用着到注册中引用服务. Dubbo的注册中心提供了多种实现,其实现是基于dubbo的spi的扩展机制的,使用着可以直接实现自己的注册中心. @SPI("dubbo") public interface RegistryFactory { /** * 连接注册中心. * 连接注册中心需处理契约 * 1. 当设置check=false时表示不检查连接,否则在连接不上时抛出异常. * 2. 支持URL上的username:pas

12. Dubbo原理解析-注册中心之基于dubbo协议的简单注册中心实现

基于dubbo协议开源只是给出了默认一个注册中心实现SimpleRegistryService, 它只是一个简单实现,不支持集群,就是利用Map<String/*ip:port*/, Map<String/*service*/, URL>来存储服务地址, 具体不在啰嗦了,请读者翻看源代码,可作为自定义注册中的参考. 注册中心启动 SimpleRegistryService本身也是作为一个dubbo服务暴露. <dubbo:protocolport="9090"

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=

Dubbo协议介绍

关于Dubbo使用的demo我在这就不多介绍了,因为很简单,网上资源也很多.在这里我简单介绍一下Dubbo的配置中使用到的最常用的协议. 在介绍协议之前,首先要介绍一下Dubbo的线程模型 事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度. 但如果事件处理逻辑较慢,或者需要发起新的IO请求,比如需要查询数据库,则必须派发到线程池,否则IO线程阻塞,将导致不能接收其它请求. 如果用IO线程处理事件,

dubbo之dubbo协议使用

普通接口及实现类 public interface DemoService{    String sayHello(String msg);} public class DemoServiceImpl implements DemoService{    public String sayHello(String msg)    {        return "hello " + msg;    }} 服务提供者配置 <?xml version="1.0"

Dubbo 协议注意项

Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况. 缺省协议,使用基于netty3.2.2+hessian3.2.1交互. 连接个数:单连接    连接方式:长连接    传输协议:TCP    传输方式:NIO异步传输    序列化:Hessian二进制序列化    适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串

Jmeter测试webocket协议

Jmeter本身不支持websocket协议的,所以需要安装第三方的插件还有6个依赖包. 首先,我们需要准备Jmeter的WebSocket协议的支持插件: JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar 这插件依赖一下几个jar包 1.jetty-http-9.1.2.v20140210.jar 2.jetty-io-9.1.2.v20140210.jar 3.jetty-util-9.1.2.v20140210.jar 4.websocket-api-9.