JMeter 介绍
JMeter 是 Apache 组织基于 Java 开发的一款开源的性能测试工具。它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域,并可以在 Windows、Mac、Linux 环境下安装使用。JMeter 还提供了图形界面,这使得编写测试用例变得非常简单,具有易学和易操作的特点。
前置准备:
- 下载安装配置jmeter
- 安装dubbo插件 jmeter-plugins-for-apache-dubbo
- jmeter本身并不支持私有的 dubbo 协议,需要下载第三方插件
- jmeter-plugins-for-apache-dubbo:是一款由 Dubbo 社区 Commiter – 凝雨同学开发的 JMeter 插件
- 安装方式
- 克隆项目
git clone https://github.com/thubbo/jmeter-plugins-for-apache-dubbo.git
- 打包项目,构建 JMeter 插件,得到:jmeter-plugins-dubbo-2.7.3-jar-with-dependencies.jar
mvn clean install
- 将jar包放入${JMETER_HOME}\lib\ext路径下,重启jmeter
操作步骤:
- 创建线程组
在“测试计划”上右键 【添加】–>【线程(用户)】–>【线程组】
- 增加dubbo取样器
在刚刚创建的线程组上右键 【添加】–>【取样器】–>【Dubbo Sample】
Dubbo Sample界面如下:
按照被测服务进行配置,参考https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/wiki/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97
各参数说明如下:
注册协议Protocol | none:为直连方式 |
---|---|
zookeeper:使用zk注册中心 | |
multicast:广播方式 | |
redis:使用redis注册中心 | |
simple:使用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 | 异常重试次数(类似这种分布式服务通信框架,大多都有重试机制,是为了保证事务成功率),不包括第一次调用,不需要重试请设为0 |
Cluster | 集群类型,可选:failover/failfast/failsafe/failback/forking |
Group | 服务分组,当一个接口有多个实现,可以用分组区分,必须和服务提供方一致 |
Connections | 连接数,同上,根据配置填写 |
Async | 服务处理类型,包括sync(同步)、async(异步),根据配置填写 |
Loadbalance | 负载均衡策略,包括random(随机)、roundrobin(轮询)、leastactive(最少活跃数)、consistenthash(一致性哈希) |
Interface | 接口名(因为dubbo服务大多是开发根据规范自行命名的,因此这里需要填写完整的接口名+包名) |
Method | 当前接口下的方法名,按照开发提供的API文档填写即可 |
Args | 接口报文,根据API文档填写,如上图所示,添加输入行,输入对应的参数类型和值即可(参数类型和值如何定义填写,请参考上面的链接) |
paramType | 参数支持任何类型,包装类直接使用java.lang下的包装类,小类型使用:int、float、shot、double、long、byte、boolean、char,自定义类使用类完全名称 |
paramValue | 基础包装类和基础小类型直接使用值,例如:int为1,boolean为true等,自定义类与List或者Map等使用json格式数据 |
- 参考如上参数说明,按照被测服务信息进行配置。例:配置zk注册中心地址,填写被测服务接口名称及方法名,配置参数类型并填写参数取值。正确配置好后,可以正常调用并添加监听器查看返回。
补充: