当前位置:网站首页>Rpc interface stress test
Rpc interface stress test
2022-08-10 05:03:00 【Yehenara Hermione】
前言
现今有比较多的rpc框架应用于实际的生产中,像比较流行的Dubbo、Motan、 Thrift、Grpc等.今天作者将以最近项目中用到的grpc为例,结合jmeter来介绍下rpc压测实施步骤.学习本文前需对rpc框架、jmeter有个大致的了解,知道rpc如何用工具生成各种语言的代码.Grpc本身是支持很多种语言的,而jmeter本身只支持java语言,因此我们的脚本也需要选用java.
步骤一:rpc脚本准备
先来看看我本地的项目目录,对结果有个大致的了解,我的工程里包含多个微服务(gnid、hdr等)的代码,每个微服务我建了一个包.这里只以gnid为例来说明:
1.IDE新建maven项目,修改pom.xml,加入grpc、jmeter的依赖包,以及grpc的代码生成插件
在src/main/java下新建目录(如命名proto),将项目的.proto文件copy进去,如图1中的gnid.proto
执行”maven install”,会生成相应的通信及服务代码
4.将图3中生成的代码copy到图1中的建的gnid包中去
- 编写rpc的client端的代码,如下图.在构造方法中初始化与server端的连接(这里的写法都是固定的).需要说明的是,接口多个参数赋值,可按照下图中2的方法进行(对check和sign两个参数赋值)
步骤二:java sample 脚本准备
- 编写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)://测试结束时调用;
至此,脚本就准备好了.关于脚本还有如下几个点需要注意的:
a. rpc建立的是长连接,初始化服务端连接的代码应放在“setupTest”方法中,这样单个用户在执行期间都是复用该连接(实际生产中也是这么用的,建立连接的过程还是挺耗时的).同样, shutdown请求,放在teardownTest方法中即可
b. 通常一个rpc服务会包含多个接口,为了避免每个接口都写一个java sample请求,这里有个小技巧,可以在参数中增加一个字段,用于区分不同的接口
步骤三:将脚本打成可执行包,放到jmeter的\lib\ext\目录下
步骤四:启动jmeter,新建“线程组”,在线程组下新建java请求
选择测试类
填写在代码中设定的参数:
剩下的增加相应的断言、监听器、参数化(如需要),就可以像玩http一样开始压测了.
总结
本文重点介绍了两个方面的知识点.其一,rpc压测脚本如何写;其二,jmeter如何执行java sample请求.有问题的小伙伴,欢迎留言区交流~~
边栏推荐
- 【LeetCode】Day111-字母异位词分组
- 解决“File has been changed outside the editor, reload?”提示
- The time for flinkcdc to read pgsql is enlarged. Does anyone know what happened? gmt_create':1
- Joomla漏洞复现
- 告诉你如何从keil工程知道使用了多少RAM和ROM空间
- Ueditor editor arbitrary file upload vulnerability
- 网络层与数据链路层
- 转型做产品,考NPDP靠谱吗?
- 如何在不同场景下选择合适的示波器探头
- 【Web3 系列开发教程——创建你的第一个 NFT(7)】创建一个 NFT DApp,给你的 NFT 赋予属性,例如图片
猜你喜欢
随机推荐
网络层与数据链路层
How does flinksql write that the value of redis has only the last field?
mysql常用命令有什么
How cursors work in Pulsar
Ask you guys.The FlinkCDC2.2.0 version in the CDC community has a description of the supported sqlserver version, please
开发智能硬件过程中需要掌握的方法之经典
干货 | 查资料利器:线上图书馆
电流探头如何设置示波器参数
单页面应用
如何从代码层提高产品质量
【OpenCV图像处理4】算术与位运算
SQL Server查询优化
SQLSERVER 2008 解析 Json 格式数据
JS获取当前时间的年、月、日、时间等
【心理学·人物】第二期(学术X综艺)
About the problem that the mongodb driver count method of rust cannot be used with the near condition
添加路由的2种方式--router
webrtc学习--websocket服务器
ctf-pikachu-file_inclusion
Flutter开发:报错The following assertion was thrown resolving an image codec:Unable to…的解决方法