多用户对REST API的异步POST请求,并等待它们在Jmeter中完成所有操作

时间:2016-06-16 06:37:20

标签: rest asynchronous jmeter

我使用相同的输入Json在REST API上提交多个POST提交。这意味着多用户(例如10000)使用相同的Json提交相同的POST来测量POST请求的性能,但我需要使用GET方法捕获每次提交的完成结果,并且仍然测量GET的性能。这是一个异步过程如下。

  • POST提交
  • 生成ID1
  • 等待处理
  • 在下一步中将生成另一个ID2
  • 等待处理
  • 下一步将生成另一个ID3
  • 等待处理
  • 最后一步是完成。

因此,我需要创建一个jmeter测试计划,该计划可以处理多个用户提交的异步POST提交并等待它们被处理,并最终捕获每次提交的完成情况。我需要生成一个图表和表格格式报告,可以显示延迟和吞吐量。对不起我的冗长问题。谢谢,桑塔纳。

1 个答案:

答案 0 :(得分:1)

根据您在评论中的澄清,我认为您有一个相当简单的脚本,可以这样表达:

Thread Group
    HTTP Sampler 1 (POST)
        Post-processor: save ID1 as a variable ${ID1}

    Timer: wait for next step to be available

    HTTP Sampler 2 (GET, uses ${ID1})
        Post-processor: save ID2 as a variable ${ID2}

    Timer: wait for next step to be available

    HTTP Sampler 3 (GET, uses ${ID1} and ${ID2})
        Post-Processor: extract completion status
        (Optional) Assertion: check completion status

我不能谈论具体使用哪种Timer,或者哪种后处理器,它们取决于您的具体要求。

您无需担心JMeter透视图中的多个用户(变量始终对用户而言是独立的),但当然您需要确保多个初始POST不会从应用程序角度相互冲突(即每个帖子都应该处理独立的数据)

延迟standard interface used to save results in the file的一部分。但正如JMeter自己的文档所述,延迟测量在JMeter中有点受限:

  

JMeter测量从发送请求之前到刚收到第一个响应之后的延迟。因此,时间包括组装请求以及组装响应的第一部分所需的所有处理,其通常将长于一个字节。协议分析器(如Wireshark)测量通过接口实际发送/接收字节的时间。 JMeter时间应该更接近浏览器或其他应用程序客户端所经历的时间。

吞吐量在某些UI listeners中可用,但也可以按照与JMeter计算方式相同的方式计算:

  

吞吐量=(请求数量)/(总时间)

使用文件中的原始数据。

如果您计划运行100-200个用户(或出于调试目的),请使用UI侦听器;如果负载较高,请使用非UI模式的JMeter,并将结果保存为CSV,以后可以analyze。我说让你的测试首先通过UI模式传递给100个用户,然后设置一个更健壮的多机10K用户测试。