-3

我是 Apache Jmeter 的新手。基本上我想对我们的几个 thrift API 进行负载测试,但不知道从哪里开始。在 java 中,api 接受 2 个参数,然后发送 java 对象作为响应。

任何指针都会非常有帮助。

4

3 回答 3

2

JMeter 并不是特别适合它,但它足够灵活以支持您的用例。

有一种使用 BeanShell 的可扩展机制。JMeter 提供了 BeanShell Sampler,它能够调用 Java 代码,包括使用外部 jars。

简单用法:

  1. 从空的 JMeter 项目开始
  2. 创建一个具有所有默认值的线程组(您可以使用线程数、加速等)
  3. 使用以下代码添加 BeanShell 采样器:

    Thread.sleep(2000L);
    
  4. 添加查看结果树侦听器

  5. 保存并运行

您应该会看到一个基于您的线程和循环数的绿色三角形(或多个三角形),其输出如下:

 Thread Name: Thread Group 1-1
 Sample Start: 2013-11-02 14:48:11 GMT+03:00
 Load time: 5030
 Latency: 0
 Size in bytes: 0
 Headers size in bytes: 0
 Body size in bytes: 0
 Sample Count: 1
 Error Count: 0
 Response code: 200
 Response message: OK

如果您使用任何技术来分析结果,即

  • JMeter 嵌入式侦听器,例如聚合报告、摘要报告、图形结果等。
  • 将结果存储到 CSV 文件并使用 Excel 或等效文件打开它们(请参阅 JMeter 安装的 /bin 目录下的 jmeter.properties 文件。属性前缀为“jmeter.save.saveservice”。
  • JMeter Ant 任务(请参阅 JMeter 安装下 /extras 文件夹中的 Test.jmx 和 build.xml)
  • JMeter 结果分析插件

您将看到您的请求成功率、最小/最大/平均时间(我猜大概是 2 秒)和更多信息(取决于您的配置)。

特别是您的用例假设

  1. 重要将 thrift(或其他)jar 放在 lib/ext 文件夹下(否则您将无法访问您的 API
  2. 导入需要在 BeanShell Sampler 中某处测试的类

    导入你的包。你的类;

  3. 从 BeanShell Sampler 调用要测试的方法

  4. (可选)对响应做一些断言。IE

    if (yourresponse != yourexpectedresponse){
    IsSuccess=false;
    ResponseMessage= "Test Failed";
    }
    

希望这可以帮助

于 2013-11-02T12:10:04.757 回答
1

您可以使用 JSR223 Sampler + Groovy(在 jmeter/lib 中添加 groovy-all.jar)并查看此客户端示例,请参阅 NonblockingClient 代码以获取示例:

让您的 groovy 代码最后至少调用以下代码:

SampleResult.setSuccessful(true/false)
SampleResult.setResponseCode("code")
SampleResult.setResponseMessage("message")

看:

当然,确保在 jmeter/lib 中添加所需的依赖项。

于 2013-11-02T15:24:11.797 回答
1

我已经为 JMeter 编写了一个 CustomThriftSampler 来通过 thrift 服务加载测试 HBase。您可以在我的博客上获得有关它的详细信息 - http://1-st.blogspot.in/2013/12/load-testing-thrift-services-custom.html。无法创建通用代码。无论如何,它简单明了的java代码。任何人都可以尝试。如果时间允许,我将编写一个通用代码并提交到 github !

于 2013-12-04T11:42:34.890 回答