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 <seb...@gmail.com> 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 <milam...@apache.org> 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
>>>
>>>       
>>     
>   

Reply via email to