RPC接口如何进行压力测试?

2020-02-24 12:46:14 浏览数 (1)

转自:KIWI的碎碎念

大家都知道 dubbo 是一个优秀 rpc 框架,它一般(dubbox 除外)通过对外提供 tcp协议的接口进行外部调用。而我们日常使用的测试工具 jmeter 并不支持 dubbo 协议的请求。所以本文到此结束,谢谢观看,再见。

当然 jmeter 本身的确是不支持 dubbo 的请求,但是呢,有一个老哥,他通过 dubbo 的泛化调用特性写了一个jmeter 的插件,使用这个插件可以很方便的进行 dubbo 接口的调用。下面就来说说如果使用 jmeter 进行 dubbo 接口测试。

安装插件
  1. 首先我们要安装的这个插件叫 jmeter-plugins-for-apache-dubbo,下面是他相关的几个地址
  2. 项目的 github 地址[1]
  3. 官方文档地址[2]
  4. 各版本下载地址[3]
  5. 下载插件

安装插件的第一件事肯定是下载了,点击上面的各版本下载地址[4]去下载最新的插件,这里有两点要注意。

  1. 第一,作者版本记录放在github,下载的包放在的却是码云,可能基于下载速度的考虑。但是码云下载超过1M 要强制登录,所以前提你要有一个码云账号。
  2. 第二,作者打了两种包,一种是包含依赖的包 jmeter-plugins-dubbo-x.x.x-jar-with-dependencies.jar,另一种不包含依赖的包 jmeter-plugins-dubbo-x.x.x.jar。一般情况下推荐使用第一种,直接可以使用。第二种还要下载项目依赖的包再一个一个放进去。除非出现依赖冲突,否则别没事找事。
  3. 安装插件

安装就比较简单了,把上步下载的包放入jmeter 安装目录下的 ${JMETER_HOME}libext,重启就 OK 了

打开 Jmeter

默认会创建一个 Test Plan (测试计划)

创建线程组

在 Test Plan 上右击,然后添加 -> 线程 -> 线程组

线程组配置

如果只是接口测试的话直接用默认配置的就可以了,这些配置与压测有关,后面会另起文章说明

添加 dubbo 默认配置

右击线程组,添加 -> 配置元件 -> Dubbo Config

配置 dubbo 默认配置

这里就需要按照你项目的具体情况进行配置了

  1. Protocol 对应项目中 dubbo 使用的协议,这里我们使用的 zk 协议
  2. Address 就是你的注册中心的地址了
  3. Group 项目配置的分组

其它按需配置就可以了

添加 Dubbo 取样器

右击 线程组,添加 -> 取样器 -> Dubbo Sample

配置 Dubbo 取样器
  1. 获得接口列表

如果不想直接输入的话,点击 Get Provider List 会自动连接上面 Dubbo Config 配置的 zk 地址获得所有注册的服务

  1. 点击 Get Provider List

image.png

  1. 确定提示
    1. 点击按钮后会有一个可能会比较耗时的提示,不管点 Yes 就行

    image.png

  2. 获取完成后提示

image.png

2. 选择要进行测试的接口与方法

  1. 选择你要调用的接口
    1. 在 Interfaces 的下拉框选择,当然你也可以直接输入

    image.png

  2. 选择你要调用的方法
    1. 在 Methods 下拉框选择,当然你同样可以输入

    image.png

    3. 设置参数

  3. 我们以一个判断是否为工作日的接口为例
    1. 接口定义

    image.png

    1. 参数定义

    image.png

  1. 响应值定义

image.png

  1. 添加参数
    1. 点击 Args 右边的,增加按钮
    2. 在 paramType 框内添加参数类的全限定名,注意这里是 paramType 是参数类型而不是参数名称
    3. 在 paramValue 添加你要传参的参数类的 json 形式
运行接口
  1. 配置工作完成后,点击工具栏的绿色运行按钮

image.png

  1. 点击后会有一个提示你先保存,直接 Yes 找个你喜欢的文件夹,然后再次点击
添加察看结果树

上一步运行后,运行一闪而过,除非查服务端日志,否则我们肯定不知道响应的接口是什么。所以要配置一下结果记录 右击 线程组,添加 -> 监听器 -> 察看结果树

再运行一次,发现察看结果树内已经有请求记录了,其中响应数据就是本次请求的结果。请求结果比真正的返回类多了一个 class 字段,因为是使用的泛化调用,这里是告知响应类的类型

参考资料

[1]

项目的 github 地址: https://github.com/thubbo/jmeter-plugins-for-apache-dubbo

[2]

官方文档地址: https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/wiki/用户指南

[3]

各版本下载地址: https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases

[4]

各版本下载地址: https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases

0 人点赞