Re: Apache JMeter org.apache.http.NoHttpResponseException Errors on our WordPress server tests

Dmitri T <[email protected]> Tue, 20 Aug 2024 09:43:30 +0200
Newsgroups gmane.comp.jakarta.jmeter.user
Message-ID <PH7PR12MB713906907DC8BA4C2DFD31D3C08D2@PH7PR12MB7139.namprd12.prod.outlook.com>
Richard Dominguez wrote:
> Hello, I need help!
>
> Summary:
> We are conducting stress testing with Apache JMeter 5.6.3, and are
> experiencing JMeter errors once our wordpress server hits a certain number
> of users/threads (around 200).
> The higher the number of users/rps, the higher the percentage of errors
> would occur (8% to 40+%).
> It appears the errors aren't originating from the Wordpress server, but the
> JMeter HTTP4 Client.
>
> **QUESTIONS**:
> 1. Is #2 below (updating user.properties and hc.parameters) the "correct"
> way to get around
> these JMeter Errors?
> 2. What pitfalls, if any, will incur from doing #2 below in our tests?
>
> Through trial and error, we found only two solutions that make the errors
> go away:
> 1. Working, but unacceptable: Disable Keep-Alive header in ALL JMX Http
> Requests (Unacceptable, as most web browsers will send the request so this
> isn't realistic).
> 2. Working, plus we don't need to update our JMX tests: We discovered a
> stackoverflow post that recommended editing the following files:
>       a. JMeter/bin/user.properties: Add following lines:
>           httpclient4.retrycount=1
> hc.parameters.file=hc.parameters
>       b. JMeter/bin/hc.parameters: Add following lines:
>           http.connection.stalecheck$Boolean=true
>
> Additional Info:
>
> JMeter Version:
> 5.6.3
>
> JMeter HTTP Request Client Implementation:
> HTTP4
>
> JMeter JMX Test:
> A simple test with the root URL, and several /wp-content/ image and svg
> resources.
>
> JMeter Response Code:
> Non HTTP response code: org.apache.http.NoHttpResponseException
>
> JMeter Response Message:
> Non HTTP response message: some.server.com:443 failed to respond
>
> Server Info:
> 1. The org.apache.http.NoHttpResponseException shown in Apache JMeter
> doesn't correlate to any errors in the Apache WordPress logs.
> 2. At the time the errors occur, even at extreme loads of 20k+ users, the
> server's CPU and Memory usage never go above 20%.
>
> Other Things We Tried That Made No Difference:
> 1. Updating the HTTP Request Sampler's timeout.
> 2. Changing the HTTP Request headers content types around.
> 3. Updating the Apache/WordPress Server's Max Keep Alive Connection from
> 100 to 200.
>
Given your test fails with "some.server.com:443 failed to respond" I 
don't think you should be amending your JMeter configuration, the error 
indicates that the system under test (WP) cannot handle the load

You can enable Java network debugging 
<https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/ReadDebug.html> 
by adding "javax.net.debug=all" line to system.properties file  and 
JMeter HttpComponents debugging 
<https://www.blazemeter.com/blog/jmeter-logging>  by adding <Logger 
name="org.apache.http" level="debug" /> line to log4j2.xml file

This way you will be able to see who exactly is closing the connection 
and why.

Also you shouldn't be hitting images directly, you should rather 
configure HTTP Request 
<https://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request> 
sampler to download embedded resources and add HTTP Cache Manager 
<https://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cache_Manager> 
to represent the browser cache as this is what real browsers would be doing.

JMeter configuration must represent the real browser so ensure that 
JMeter's network footprint is the same (i.e. don't forget to add Timers 
<https://jmeter.apache.org/usermanual/component_reference.html#timers>)