Jmeter压测Thrift服务接口

Posted 163yun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter压测Thrift服务接口相关的知识,希望对你有一定的参考价值。

此文已由作者夏鹏授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。


Apache Jmeter是基于Java开发的性能测试工具,支持多种协议的测试,包括:Web(HTTP/HTTPS)、SOAP、FTP、Database(JDBC)、LDAP、Mail(POP3/IMAP)、JAVA;还提供了多种性能数据统计报表,使用简单方便简直是性能测试中居家旅行杀人越货之必备;但是~本次性能测试需求是Thrift服务接口,并不在Jmeter支持的协议范围内,继续用钟意的Jmeter完成Thrift服务的接口压测就需要进行二次开发来实现,以下简单介绍一下通过Jmeter进行扩展协议二次开发以支持Thrift服务接口的压测需求的过程。

Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, php, Ruby, Erlang, Perl, Haskell, C#, Cocoa, javascript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

Thrift也支持Java就好办了~


1.Java测试代码编写

1-1测试项目

rec包是Thrift服务类

ThriftClientTest是测试类

技术分享图片

1-2引入依赖

技术分享图片

1-3测试代码

测试类需要继承Jmeter的AbstractJavaSamplerClient类,然后重写以下方法:

①public void setupTest(JavaSamplerContext context);初始化方法,用于初始化性能测试的每个线程,每个线程前都会执行一次。

初始化Thrift客户端

技术分享图片

②public Arguments getDefaultParameters();设置入参,已设置的参数会显示在jmeter GUI的参数列表中。

设置本次测试接口需要参数化的参数user_id

技术分享图片


③public SampleResult runTest(JavaSamplerContext context);性能测试的线程运行体,测试执行主体,从context中获取参数,并调用被测方法,完成与服务器的交互。该方法是java Sampler实现的重点,执行次数取决于线程数和循环次数。

设置请求属性以及具体的调用逻辑

技术分享图片

sampleStart()开始统计响应时间标记、sampleEnd()结束统计响应时间标记,两个时间戳之差就是一次java请求的响应时间,单位是ms。

System.out输出会显示在启动JMeter时的命令窗口内,有助于监控结果但过多的输出会影响性能的准确性。

④public void teardownTest(JavaSamplerContext context);测试结束时调用,每个线程执行一次。setupTest和teardownTest方法不需要时可以不写。

关闭相关的资源

技术分享图片

所有重写方法执行的先后顺序为:

getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)


1-4集成到Jmeter

com.netease.rec包和ThriftClientTest测试类分别打成jar、Thrift中的jar包 libthrift-0.9.3.jar, slf4j-api-1.7.12.jar放到apache-jmeter-2.13/lib/ext下


2.Jmeter建立测试计划

2-1重新启动Jmeter。新建Thread Group, 在Thread Group下,Thread Group -> Add -> Sampler -> Java Request,在Classname下选择新做的plugin的类名。

技术分享图片

2-2最后,配置相应的线程数,循环次数,添加聚合报告就可以进行Thrift服务接口的压力测试了

技术分享图片


网易云免费体验馆,0成本体验20+款云产品! 

更多网易技术、产品、运营经验分享请点击


相关文章:
【推荐】 Android事件分发机制浅析(3)












以上是关于Jmeter压测Thrift服务接口的主要内容,如果未能解决你的问题,请参考以下文章

性能工具之Jmeter压测Thrift RPC服务

Rpc接口压测

Jmeter接口压测快速入门

jmeter在服务器上的压测命令

jmeter压测dubbo详解

jmeter安装配置教程及使用