Apache Jmeter进阶-RPC服务压测
来源:互联网 发布:58上面网络销售可靠吗 编辑:程序博客网 时间:2024/06/13 17:37
在上一节Apache Jmeter入门中,我们简单介绍了Jmeter的使用方法。
本节中,我们将着重介绍Jmeter压测,以Thrift RPC为例子进行讲解。
1、准备
我们依然采用Thrift RPC这节中的RPC服务作为服务端程序并运行。
2、Jmeter测试类编写
2.1 Jmeter测试类简介
- 新建一个普通的Java工程
- 添加JMeter Maven依赖。
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>2.13</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>2.13</version></dependency>
新建一个Java Class,如下例中的
TestThriftByJmeter
,并继承AbstractJavaSamplerClient
。AbstractJavaSamplerClient
中默认实现了四个可以覆盖的方法,分别是getDefaultParameters()
,setupTest()
,runTest()
和teardownTest()
方法。getDefaultParameters
方法主要用于设置传入界面的参数;setupTest
方法为初始化方法,用于初始化性能测试时的每个线程;runTest
方法为性能测试时的线程运行体;teardownTest
方法为测试结束方法,用于结束性能测试中的每个线程。
2.2 RPC Thrift测试类编写
ThriftClient
public class ThriftClient { private ComputeServer.Client client = null; private TTransport transport = null; protected ThriftClient(String ip, int port) { try { TTransport transport = new TFramedTransport(new TSocket(ip, port)); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); client = new ComputeServer.Client(protocol); } catch (Exception e) { e.printStackTrace(); } } protected ComputeResponse getResponse(ComputeRequest request) { try { ComputeResponse response = client.getComputeResult(request); return response; } catch (Exception e) { e.printStackTrace(); return null; } } protected void close() { if (transport != null && transport.isOpen()) { transport.close(); } }}
TestThriftByJmeter
public class TestThriftByJmeter extends AbstractJavaSamplerClient { private ThriftClient client; private ComputeRequest request; private ComputeResponse response; @Override public Arguments getDefaultParameters() { Arguments arguments = new Arguments(); arguments.addArgument("ip", "127.0.0.1"); arguments.addArgument("port", "9000"); arguments.addArgument("X", "0"); arguments.addArgument("Y", "0"); arguments.addArgument("type", "0"); return arguments; } @Override public void setupTest(JavaSamplerContext context) { try { // 获取参数 String ip = context.getParameter("ip"); int port = context.getIntParameter("port"); int x = context.getIntParameter("X"); int y = context.getIntParameter("Y"); ComputeType type = getComputeType(context.getIntParameter("type")); // 创建客户端 client = new ThriftClient(ip, port); // 设置request请求 request = new ComputeRequest(x, y, type); } catch (Exception e) { e.printStackTrace(); } super.setupTest(context); } public SampleResult runTest(JavaSamplerContext context) { SampleResult result = new SampleResult(); result.sampleStart(); try { long begin = System. currentTimeMillis(); response = client.getResponse(request); long cost = (System.currentTimeMillis() - begin); System.out.println(response.toString() + " cost:[" + cost + "ms]"); if (response == null) { result.setSuccessful(false); return result; } if (response.getErrorNo() == 0) { result.setSuccessful(true); } else { result.setSuccessful(false); } } catch (Exception e) { result.setSuccessful(false); e.printStackTrace(); } finally { result.sampleEnd(); } return result; } public void tearDownTest(JavaSamplerContext context) { if (client != null) { client.close(); } super.teardownTest(context); } ComputeType getComputeType(int type) { ComputeType computeType; switch (type) { case 0: computeType = ComputeType.ADD; break; case 1: computeType = ComputeType.SUB; break; case 2: computeType = ComputeType.MUL; break; case 3: computeType = ComputeType.DIV; break; default: computeType = ComputeType.ADD; break; } return computeType; }}
代码结构:
3、Jmeter测试
3.1 添加依赖
首先将2.2节
中的代码编译打包,并使用命令mvn dependency:copy-dependencies -DoutputDirectory=lib
将该代码的Jar包和所依赖的包,添加到Jmeter的apache-jmeter-2.13\lib\ext
目录下。
3.2 Jmeter设置
打开Jmeter,设置如下信息。
在添加Java请求时,注意要选择2.2节中的Jmeter测试类,下面的列表中可以看到参数和默认值。
3.3 测试
下面我们将进行持续一分钟的的性能压测,首先设置线程组,设置10个并发线程。
之后进行测试,测试结束后,可以在聚合报告中看到此次压测的结果。
服务端日志:
阅读全文
0 0
- Apache Jmeter进阶-RPC服务压测
- Apache JMeter 压测使用
- 利用Apache Axis开发JAX-RPC服务
- web压测工具 apache-Jmeter安装,基于win10
- Apache JMeter
- Apache JMeter
- Apache JMeter
- Apache JMeter
- Apache Jmeter
- Apache JMeter
- 【jmeter】jmeter带参数压测步骤
- Apache XML-RPC入门
- Apache xml-rpc入门
- Apache xml-rpc入门
- java+apache-rpc
- Apache xml-rpc
- Apache cxf rpc demo
- Apache Avro RPC 实例
- 在Ubuntu 14.04.2 LTS上安装Qt
- java网络编程之application/x-www-form-urlencoded MIME
- Apache Jmeter入门
- Webstorm 2016 full version activation code for free
- Java中解压文件名有中文的rar包出现乱码问题的解决
- Apache Jmeter进阶-RPC服务压测
- 线性表的顺序存储
- 堆栈内存区别
- u-boot移植详解
- [leetcode]85. Maximal Rectangle(Java)
- oculus安装
- centos下 Maven 私服nexus 搭建教程
- dotTrace性能分析之书写延迟
- 论国家存在的必要性