前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rpc接口压测_rpc服务接口测试

Rpc接口压测_rpc服务接口测试

作者头像
全栈程序员站长
发布2022-11-08 15:05:42
7640
发布2022-11-08 15:05:42
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前言

哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(^▽^)PS:有问题可以联系我们哦v ceshiren001

复制“下方链接”,提升测试核心竞争力! 更多技术文章分享和免费资料领取

现今有比较多的rpc框架应用于实际的生产中,像比较流行的Dubbo、Motan、 Thrift、Grpc等。今天作者将以最近项目中用到的grpc为例,结合jmeter来介绍下rpc压测实施步骤。学习本文前需对rpc框架、jmeter有个大致的了解,知道rpc如何用工具生成各种语言的代码。Grpc本身是支持很多种语言的,而jmeter本身只支持java语言,因此我们的脚本也需要选用java。

步骤一:rpc脚本准备

先来看看我本地的项目目录,对结果有个大致的了解,我的工程里包含多个微服务(gnid、hdr等)的代码,每个微服务我建了一个包。这里只以gnid为例来说明:

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

1.IDE新建maven项目,修改pom.xml,加入grpc、jmeter的依赖包,以及grpc的代码生成插件

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试
  1. 在src/main/java下新建目录(如命名proto),将项目的.proto文件copy进去,如图1中的gnid.proto
  2. 执行”maven install”,会生成相应的通信及服务代码
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

4.将图3中生成的代码copy到图1中的建的gnid包中去

  1. 编写rpc的client端的代码,如下图。在构造方法中初始化与server端的连接(这里的写法都是固定的)。需要说明的是,接口多个参数赋值,可按照下图中2的方法进行(对check和sign两个参数赋值)
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

步骤二:java sample 脚本准备

  1. 编写jmeter的java sample代码。

关于jmeter的java sample脚本这里需要说明下:

创建一个类并实现JavaSamplerClient接口或继承bstractJavaSamplerClient,并重写如下几个方法:

代码语言:javascript
复制
public Arguments getDefaultParameters()://设置可用参数的默认值;
public void setupTest(JavaSamplerContext arg0)://每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0)://开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0)://测试结束时调用;
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

至此,脚本就准备好了。关于脚本还有如下几个点需要注意的:

a. rpc建立的是长连接,初始化服务端连接的代码应放在“setupTest”方法中,这样单个用户在执行期间都是复用该连接(实际生产中也是这么用的,建立连接的过程还是挺耗时的)。同样, shutdown请求,放在teardownTest方法中即可

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

b. 通常一个rpc服务会包含多个接口,为了避免每个接口都写一个java sample请求,这里有个小技巧,可以在参数中增加一个字段,用于区分不同的接口

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

步骤三:将脚本打成可执行包,放到jmeter的\lib\ext\目录下

步骤四:启动jmeter,新建“线程组”,在线程组下新建java请求

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

选择测试类

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

填写在代码中设定的参数:

Rpc接口压测_rpc服务接口测试
Rpc接口压测_rpc服务接口测试

剩下的增加相应的断言、监听器、参数化(如需要),就可以像玩http一样开始压测了。

哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(^▽^)PS:有问题可以联系我们哦v ceshiren001

复制“下方链接”,提升测试核心竞争力! 更多技术文章分享和免费资料领取

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182365.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档