Jmeter实现dubbo接口压测

  • 当前项目中重构了消息服务,须要对消息服务接口作性能压测,评估消息服务的性能状况,查询了不少资料,最后调试经过,记录下
  • 之前也用Jmeter对dubbo接口进行过测试,须要使用java语言编写方法调用dubbo接口,而后建立一个Maven项目,生成依赖的jar包,在把jar包放到Jmeter的lib目录,而后在java类型请求中,就能够看到自定义的java请求,及其繁琐,耗时

下面讲解怎么使用jmeter-plugins-dubbo作接口测试java

 

第一步:

插件下载地址:jmeter-plugins-dubbogit

 

注意:github

jmeter-plugins-dubbo使用

下载提供2种版本:web

A. 第一种版本是jmeter-plugins-dubbo-2.7.1-jar-with-dependencies.jar相似带有with-dependencies的jar是包含一些基础包,我下载的这个redis

B. 第二种是不带依赖包的版本,例如jmeter-plugins-dubbo-2.7.1.jar。而后获取如下依赖包,将它们放到jmeter安装目录下的lib/ext。若是是项目中使用报错,或者dubbo版本不是2.X版本的,建议下载这个json

gson-2.8.2.jarapi

dubbo-2.8.4.jar  负载均衡

javassist-3.21.0-GA.jar框架

jline-0.9.94.jardom

log4j-over-slf4j-1.7.5.jar

netty-3.7.0.Final.jar

slf4j-api-1.7.5.jar

zkclient-0.2.jar

zookeeper-3.4.9.jar

 

第二步:

将下载的jmeter-plugins-dubbo-2.7.1-jar-with-dependencies.jar

放在jar文件JMETER_HOME/lib/ext目录下

 

而后启动Jmeter添加dubbo sample

 第三步:

获取jmeter sample所须要填写的参数:

开发提供信息:

1)zookeeper地址:zookeeper://10.185.240.81:2181?backup=10.185.240.82:2181,10.185.240.83:2181

2)直连地址:dubbo://10.0.254.32:10810

3)服务版本:1.0.0

1.telnet 直连地址  telnet 10.0.254.32 10810

2.ls命令查看接口列表

3.ls -l 接口名  查看该接口方法列表,获取方法名和参数类型

4)根据接口文档填写参数,使用invoke命令进行调试

 

第四步:

invoke调试经过后将参数填入到jmeter dubbo sample中

补充:接口名和方法名能够经过get provider list选择,避免手动填写出错,实测过程当中获取provider list时间较长

请求参数

返回结果

单接口调试经过,能够设置场景压测了!

 

各参数说明以下:

Protocol:注册协议,包括zookeeper、multicast、Redis、simple;

Address:注册地址,dubbo服务的IP+Port:

①、当使用zk,address填入zk地址,集群地址使用","分隔;

②、使用dubbo直连,address填写直连地址和服务端口;

Protocol:使用的dubbo协议,包括dubbo、rmi、hessian、webservice、memcached、redis,根据本身的协议类型选择对应的选项便可;

Timeout:请求超时时间,单位ms,根据dubbo具体配置填写;

Version:版本,dubbo不一样版本之间差别较大,不一样版本之间不能互相调用,这里指定dubbo版本,是为了方便识别和说明;

Retries:异常重试次数(相似这种分布式服务通讯框架,大多都有重试机制,是为了保证事务成功率);

Cluster:集群类型,包括failover、failfast、failsafe、failback、failking;

Group:组类型,若是有的话,根据配置填写便可;

Connections:链接数,同上,根据配置填写;

Async:服务处理类型,包括sync(同步)、async(异步),根据配置填写;

Loadbalance:负载均衡策略,包括random(随机)、roundrobin(轮询)、leastactive(最少活跃数)、consistenthash(一致性哈希);

Interface:接口名(由于dubbo服务大可能是开发根据规范自行命名的,所以这里须要填写完整的接口名+包名);

Method:当前接口下的方法名,按照开发提供的API文档填写便可;

Args:接口报文,根据API文档填写,如上图所示,添加输入行,输入对应的参数类型和值便可(参数类型和值如何定义填写,请参考上面的连接);

①、paramType:参数支持任何类型,包装类直接使用java.lang下的包装类,小类型使用:intfloatshotdoublelongbytebooleanchar,自定义类使用类彻底名称;

②、paramValue:基础包装类和基础小类型直接使用值,例如:int为1,boolean为true等,自定义类与List或者Map等使用json格式数据;

 简单参数对照表复杂参数对照表

相关文章
相关标签/搜索