Configuring response timeout in Apache JMeter

2019-01-23 03:49发布

问题:

I am trying to check if a particular HTTP request's response time is over 30 seconds, and if it is, then mark it as failed and stop the thread. Because now sometimes I can even see response times close to 80seconds, an no browser is waiting that long for a reply.

I found the following three ways to set a timeout value in JMeter, however this confuses me, because there is multiple options and I don't know which one to use, or if there is any difference at all between them.

So here are the options I found that are related to response timeout:

  1. Setting Response timeout value in the sampler
  2. Add a Duration assertion


3. Setting timeout in jmeter.properties configuration file. Options I found here:

  1. os_sampler.poll_for_timeout=x
  2. http.socket.timeout=x
  3. httpclient.timeout=x

So, the problem is that I don't know where to set the response timeout from the listed options. Is there any difference at all between these options? So what I would like to see as a result: If a particular HTTP request takes more than 30 seconds to reply, stop waiting for a response and mark it as a failed request.

回答1:

For your need, an assertion is not the right solution as it will only mark the request as failed but it will wait.

The right option is a response timeout.

Regarding the 3rd point

  1. os_sampler.poll_for_timeout=x => not for http, see:

    • https://github.com/apache/jmeter/blob/trunk/bin/jmeter.properties
  2. http.socket.timeout=x => applies to all requests using HttpClient4 or 3, see:

    • https://github.com/apache/jmeter/blob/trunk/bin/hc.parameters

    • https://github.com/apache/jmeter/blob/trunk/bin/httpclient.parameters

  3. httpclient.timeout=x => Same, see:

    • https://github.com/apache/jmeter/blob/trunk/bin/jmeter.properties

I think the best option is to use 1. , if you want those values to apply to all requests, just use Http Request Defaults element:

  • http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request_Defaults


回答2:

Socket/Connect and Read/Response timeouts can be set from Http Request Defaults section at jmeter GUI. See sample:

Connect timeout: 3 seconds
Response timeout: 20 seconds.