【问题标题】:Thrift API load testThrift API 负载测试
【发布时间】:2013-11-10 03:26:06
【问题描述】:

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

任何指针都会很有帮助。

【问题讨论】:

  • 您在一天前发布了同样的问题。投反对票。
  • @CMerrill 这是投票结束的理由,而不仅仅是投票反对。

标签: jmeter performance-testing load-testing thrift


【解决方案1】:

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 Task(请参阅 JMeter 安装下 /extras 文件夹中的 Test.jmx 和 build.xml)
  • JMeter Results Analysis Plugin

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

具体您的用例假设

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

    导入 yourpackage.YourClass;

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

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

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

希望对你有帮助

【讨论】:

  • 能否请您指出一些从您的 cmets 开始的第 2 点开始的指南。基本上我已经将我的 jar uder lib\ext 文件夹放在了但不知道如何导入类和调用方法。
【解决方案2】:

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

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

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

见:

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

【讨论】:

  • 感谢您的回答。我还有几个问题。我对 JMeter 还很陌生,所以请原谅我提出一些明显的问题。到目前为止,我已根据您的评论完成此操作: 1. 将 groovy jar 和我的 thrift 客户端 jar 添加到 apache\lib\ext 文件夹 2. 创建了一个 JSR 223 采样器并将语言选择为 groovy 3. 编写了一个成功运行的示例 groovy 脚本在这之后我迷路了。不确定我需要做什么来测试我的节俭 API。任何帮助
  • groovy.jar 和客户端 jar 必须放在 jmeter/lib 中。下一步将让您分析调用了哪些自定义接口并在 groovy 脚本中对调用进行编码。顺便说一句,如果答案对您来说可以,您应该接受并投票,以便对其他人有所帮助
  • 您能否将我重定向到一些可以帮助我创建自定义界面的链接?
  • 终于可以调用我的 API。用这个答案关闭这个帖子
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多