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

Rpc接口压测_rpc服务接口测试前言哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(^▽^)PS:有问题可以联系我们哦vceshiren001复制“下方链接”,提升测试核心竞争力!更多技术文章分享和免费资料领取现今有比较多的rpc框架应用于实际的生产中,像比较流行的Dubbo、Motan、Thrift、Grpc等。今天作者将以最近项目中用到的grpc为例,结合jmeter来介绍下rpc压测实施步骤。学习本文前需对rpc框架、jmeter有个大致的了解,知道rpc如何用工具生成各种语言的代码。Grpc本身是支持很多种语言的,而jm

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言

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

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

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

步骤一:rpc脚本准备

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

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

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

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

  1. 在src/main/java下新建目录(如命名proto),将项目的.proto文件copy进去,如图1中的gnid.proto

  2. 执行”maven install”,会生成相应的通信及服务代码

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

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

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

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

步骤二:java sample 脚本准备

  1. 编写jmeter的java sample代码。

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

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

public Arguments getDefaultParameters()://设置可用参数的默认值;
public void setupTest(JavaSamplerContext arg0)://每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0)://开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0)://测试结束时调用;

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

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

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

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

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

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

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

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

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

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

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

选择测试类

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

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

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

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

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在线写java代码

    在线写java代码前言蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,可惜我错过了,我用这五年时间和很多程序员一样在困惑和迷茫中找不到出路!路其实一直都在那里,只是我们看不到而已!以前我一直被公司和技术牵着走,并不是自己在选择技术,而是不自觉地被推到了这个位置上。想想有多少人对于自己将来要从事的职业和技术类型进行过深入思考和比较呢?当我跳出编码后,我开始思考和程序及程序员职

    2022年7月8日
    26
  • jquery tmpl遍历

    jquery tmpl遍历最近,发现大家喜欢用模板渲染一些DOM,而且常常用模板嵌套一些逻辑,看了大家用jquerytmpl较多,遇到的问题大同小异。为了避免问题重复发生,现在就个人用过的一些常用功能,作下具体介绍,主要针对遍历。其它的大家可自行看看网上教程,推荐一个:jqueryTmpl,希望对大家有所帮助1.普通数组对象的遍历,关键词{{eachArray}}、$value、$index数据格式:varperso

    2022年6月15日
    34
  • poi-tl根据word模板导出word、使用spring-thymeleaf模板生成html并通过docx4j把html转word,使用jxls根据excel模板导出excel(1)[通俗易懂]

    poi-tl根据word模板导出word、使用spring-thymeleaf模板生成html并通过docx4j把html转word,使用jxls根据excel模板导出excel(1)[通俗易懂]使用poi-tl根据word模板生成word官网http://deepoove.com/poi-tlhttps://zhengkai.blog.csdn.net/article/details/81702029?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.baidujs&dist_request_id=1331302.8264.16182.

    2022年10月18日
    4
  • vue动态组件component原理_component注解

    vue动态组件component原理_component注解componentis内置组件切换方法一:component组件(单独拿出一个组件来专门进行切换使用)使用is来绑定你的组件:如下面的reviewedPlanplanDetailsListattachmentList等引入的组件名changeViewFun是用来切换组件的方法通过给is绑定的currentView来实现切换组件pathUrl就是当前的路由…

    2025年12月3日
    4
  • JavaSE 编写第一个程序

    JavaSE 编写第一个程序文章目录第一篇语法入门说在前面的话前言内容介绍更新内容其他说明本书由来帮助说明急需求职致谢与勘误自序第3版自序第2版自序第1版自序第0版自序第一章JDK下载及准备工作1.1Java介绍1.1.1Java简介1.1.2Java技术体系1.1.3前后端的工作内容1.1.4Java语言特性1.1.5Java用途1.2JDK下载1.2.1JDK与JRE的区别1.2.2JDK下载与安装1.2.3卸载1.2.4禁止JDK检查更新1.3编写代码前的准备

    2022年7月13日
    20
  • 图层合并_cad图层怎么统一到一个图层

    图层合并_cad图层怎么统一到一个图层Arcgis合并线图层和面图层相同类型的图层合并数据管理工具——常规——合并。这个工具只能是线与线、面与面、点与点相同类型的图层合并。输入要合并的图层,设置输出的数据名称就可以了,非常简单。不同类型的图层合并“合并”这个工具只能用于相同类型的图层合并,不同类型的图层合并就要先把图层转为相同的类型。比如一个线图层,一个面图层,可以把线图层直接在转换工具中使用要素转面工具转为面图层,但是这时候我们发现属性表是空的,这样做是不正确的。下边介绍一种方法:线图层和面图层合并为线图层。1、线转栅格转换工

    2025年8月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号