Hello,
Sorry, but the problem don't seems resolve.
Today, I try a load test on a Content Delivery Network (CDN) with HC3.1
vs HC4 with last JMeter trunk (r1173449).
My script :
Test only static resources (gif, png, jpeg) with direct HTTP Request
100 users
Ramp up : 100 secs
Duration test : 300 secs (5min)
Each iteration execute 39 HTTP requests
HTTP requests : Keep Alive true
I have 2 issues (on 8 same tests: 4 HC3.1 and 4 HC4.1) :
*_Issue 1_*
With HC 3.1 : always no error
With HC 4.1 : always some errors at the beginning of load test
Stack trace (on view result tree: response data) is :
org.apache.http.NoHttpResponseException: The target server failed to respond
at
org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:101)
at
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
at
org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
at
org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
at
org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
at
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
at
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at
org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:265)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1010)
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:996)
at
org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:383)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:276)
at java.lang.Thread.run(Thread.java:722)
HC 4 Summariser (begin) :
summary + 55 in 2,2s = 24,9/s Avg: 71 Min: 15 Max: 1677
Err: 0 (0,00%)
summary + 5027 in 30,0s = 167,5/s Avg: 103 Min: 1 Max: 1816
Err: 14 (0,28%)
summary = 5082 in 32,2s = 157,8/s Avg: 103 Min: 1 Max: 1816
Err: 14 (0,28%)
summary + 5013 in 31,4s = 159,7/s Avg: 283 Min: 2 Max: 3500
Err: 11 (0,22%)
summary = 10095 in 62,2s = 162,3/s Avg: 192 Min: 1 Max: 3500
Err: 25 (0,25%)
summary + 5075 in 31,6s = 160,7/s Avg: 449 Min: 37 Max: 7999
Err: 0 (0,00%)
summary = 15170 in 92,2s = 164,5/s Avg: 278 Min: 1 Max: 7999
Err: 25 (0,16%)
summary + 4984 in 34,8s = 143,2/s Avg: 587 Min: 40 Max: 11028
Err: 0 (0,00%)
summary = 20154 in 122,2s = 164,9/s Avg: 355 Min: 1 Max: 11028
Err: 25 (0,12%)
*/_
Issue 2 :_/*
With HC3.1 after ramp up:
netstat -tplna|grep java|grep ESTA|wc -l
100
With HC4.1 at beginning and after ramp up :
netstat -tplna| grep java | grep ESTA | wc -l
1145 (value change between ~1000-1150)
I make a tcp dump and analyze with wireshark.
With HC3.1 : 0-42 secs : 43 TCP conversations (inside several HTTP GET
and response)
With HC4.1 : 0-44 secs : 3011 TCP conversations (inside one HTTP GET and
one response)
HTTP conversations show Keep-Alive header (HC3 and HC4)
I suppose that is a close keep alive connection problem with JMeter.
Perhaps 2 issues are linked?
Milamber
Le 24/08/2011 11:40, sebb a ecrit :
> On 24 August 2011 02:43, sebb <[email protected]> wrote:
>
>> Looks like HTTPHC4Impl is not reusing HttpClient instances.
>>
>> It should only create one per thread per unique URL + some other fields.
>>
>> It seems not to be finding the previously created instances, so it
>> creates a new one for every sample.
>> Not sure why yet; probably something simple.
>>
> Very simple.
>
> The equals() method was returning false if the other object was the
> correct type, instead of returning false for the incorrect type.
> So the hash keys never matched.
>
> Nightly builds from r1160957 will have the fix.
>
>
>> However the code does at least seem to be closing the connections at
>> end of thread.
>>
>> On 23 August 2011 17:13, Milamber <[email protected]> wrote:
>>
>>> [snip]
>>>
>>>>> I believe is a HTTPClient issue, on close connection?
>>>>> (http://www.sunmanagers.org/pipermail/summaries/2006-January/007068.html)
>>>>>
>>>>>
>>>> I think it's more likely to be that JMeter is not tidying up the HC4
>>>> connections properly.
>>>>
>>>> Are you using Keep-Alive?
>>>>
>>>>
>>> Yes.
>>>
>>>
>>>> Can you reproduce the problem with a simpler test case, e.g. one that
>>>> could be run against a local server.
>>>>
>>>>
>>> Yes on my laptop (Debian 6 / 64 bits / openjdk 1.6u18)
>>>
>>> in attachment JMeter testcase.
>>>
>>> With HC4 impl:
>>> summary = 2590 in 72.4s = 35.8/s Avg: 994 Min: 487 Max: 4806
>>> Err: 0 (0.00%)
>>>
>>> Stats at ~ 72secs :
>>> netstat -tuplna|grep java |wc -l;
>>> 1494
>>> netstat -tuplna|grep java|grep ESTA|wc -l;
>>> 167
>>> netstat -tplnau|grep java|grep CLOSE_WAIT|wc -l;
>>> 1337
>>>
>>>
>>> With HC3 impl:
>>> summary = 4498 in 83.2s = 54.1/s Avg: 448 Min: 246 Max: 2489
>>> Err: 0 (0.00%)
>>>
>>> Stats at ~83 secs:
>>> netstat -tuplna|grep java |wc -l;
>>> 61
>>> netstat -tuplna|grep java|grep ESTA|wc -l;
>>> 60
>>> netstat -tplnau|grep java|grep CLOSE_WAIT|wc -l;
>>> 0
>>>
>>> NB: more requests in same time with HC3.
>>> NB2: HC3 ESTABLISHED connections is lesser than HC4 (60 users in JMeter
>>> scripts)
>>>
>>>
>>> Milamber
>>>
>>>
>>
>