【问题标题】:Jmeter HTTP Request: how it really worksJmeter HTTP 请求:它是如何工作的
【发布时间】:2020-11-26 11:55:35
【问题描述】:

到目前为止,我已经执行了几个 Jmeter 测试。我的测试计划非常基本。我在 mac 环境下使用 Jmeter 5.2。

Number of threads: 500
Ramp-up period: 1
Loop count 3
[x] Same user on each iteration
[ ] Delay thread creation until needed
[ ] Specify thread life time

基本上根据我上面的配置,当这个负载测试运行时,测试将在我的 JVM 中产生 500 个不同的线程。

为了创建 500 个线程,Jmeter 的时间限制只有 1 秒。因此,它会在我开始测试的那一刻起每 0.002 秒创建一个线程。

我只是通过带有有效负载的 HTTP POST 请求访问已部署的公开可用服务。

现在我真正的问题

Jmeter 发送的第一个请求可能会在 0.2 秒(200 毫秒)内得到服务器的响应。从那一刻起,那个线程会发生什么?之后这个线程会被杀死吗?

【问题讨论】:

  • 您只想断言第一个请求的响应时间?
  • 不,我不想断言任何事情。我想知道已经从服务器获得响应的前几个线程会发生什么。他们会被jmeter杀死还是一遍又一遍地重试?
  • 你定义了循环e,所以每个线程会循环3次,rampup只是线程的开始时间,而不是结束时间(设置Duration为结束时间)
  • 哦,是的,这是有道理的。我认为循环计数是针对整个测试包的(500 个线程被认为是一个循环迭代)所以,3 次将在 0.6 秒内结束。 (0.2 秒 * 3)。之后会发生什么?

标签: jmeter performance-testing jmeter-5.0


【解决方案1】:

Ramp up period 不会停止线程,设置 Duration 会在达到持续时间时停止(/杀死)线程,

每个线程独立执行,直到完成最后一个循环,

因此,在您的情况下,每个线程将在 ~0.6 秒后结束(每个请求 0.2 秒 * 3 个循环)

【讨论】:

    【解决方案2】:
    1. It is possible that the very first request that Jmeter sends will get the response from the server in just 0.2 seconds(200ms) - 是的,可能更短,问题是您的应用程序是否可以在 200 毫秒或更短的时间内响应

    2. What happens to that thread from that moment? Will this thread being killed after that? - 特别是您的设置,如果没有更多的采样器要执行,线程将再执行此 HTTP 请求采样器 2 次,然后要求停止。 p>

    您可以将JMeter logging verbosity 增加到您想要的任何级别的详细信息并检查jmeter.log file 以便了解JMeter 底层发生了什么。无需任何配置调整即可获得基本细节:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多