The tests below were using the latest trunk code (r672641)

I reverted back to r670018, where things are stable.

I can try and see if I can reproduce it, but it may take some time. If anyone wants to try this it should be a simple matter.

Configure an apache server to return headers like this:
   Keep-Alive: timeout=1, max=100
   Connection: Keep-Alive

And then use the threaded client to make simultaneous connections to it.


On Jun 30, 2008, at 7:43 AM, Sam Berlin wrote:

Yikes, that's no good.  Did you test this using the first revision of
the fix or the second (changed to use 'setIdleDuration' in
ManagedClientConnection)?

Think it'd be possible to isolate the problem to a unit test?

Sam

On Mon, Jun 30, 2008 at 10:33 AM, Paul Lindner <[EMAIL PROTECTED]> wrote:

I tested this code using production traffic and the results are not so good. Ended up with a connection/memory leak. The jmap histogram of a server in
this bad state is attached.

Also, I had some issues with one host, it used a keepalive with a timeout=1. It appears that the route pool filled up with connections. It also appears that when it closes an expired free connection that it is not released back into the pool... Here's the debug output showing the final connection allocation and the attempt to get a connection from a full pool. It appears that Freeing the connection puts it back on the Idle pool, but it becomes
inaccessible for some reason.


2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager  -
ThreadSafeClientConnManager.getConnection:
HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com], timeout =
50002008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Getting free connection
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Closing expired free connection [HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]] [null]
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.DefaultClientConnection - Connection closed
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - No free connections
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Available capacity: 1
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Creating new connection
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]]
2008-06-29 19:22:27,761 [http-80-55] DEBUG
org.apache.http.impl.conn.DefaultClientConnection - Connection closed
2008-06-29 19:22:27,818 [http-80-55] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Freeing connection
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:27,818 [http-80-55] DEBUG
org.apache.http.impl.conn.IdleConnectionHandler - Adding connection at:
12147925478182008-06-29 19:22:27,818
[http-80-55] DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute  -
Notifying no-one, there are no waiting threads

-----------------------------------------------
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager  -
ThreadSafeClientConnManager.getConnection:
HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com], timeout = 5000
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Getting free connection
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Closing expired free connection [HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]] [null]
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.DefaultClientConnection - Connection closed
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - No free connections
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Available capacity: 0
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,274 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Need to wait for
connection [HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]] [null]
2008-06-29 19:22:29,331 [http-80-79] DEBUG
org.apache.http.impl.conn.DefaultClientConnection - Connection shut down
2008-06-29 19:22:29,331 [http-80-79] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Freeing connection
[HttpRoute[{}->http://ads.socialmedia.com]][null]
2008-06-29 19:22:29,331 [http-80-79] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Notifying thread waiting
on any pool
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - No free connections
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Available capacity: 0
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Need to wait for
connection [HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]] [null]
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - No free connections
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute - Available capacity: 0
[HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]][null]
2008-06-29 19:22:29,331 [http-80-26] DEBUG
org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Need to wait for
connection [HttpRoute[{}->http://ayi.h5.snapinteractiveapps.com]] [null]



Size    Count   Class description
-------------------------------------------------------
684164112       558913  byte[]
492584016       2134710 char[]
209551728 4365661 java.util.concurrent.locks.ReentrantLock $NonfairSync 209517696 4364952 java.util.concurrent.ConcurrentHashMap $Segment 144470200 4364956 java.util.concurrent.ConcurrentHashMap $HashEntry[]
101379880       2534497 java.lang.String
65693112        628849  java.lang.Object[]
47067200        588340  com.friend.data.UserAppBean
41467120 272810 java.util.concurrent.ConcurrentHashMap $Segment[]
37081896        272661  org.apache.catalina.session.StandardSession
32830608        683971  java.util.HashMap$Entry
30965200        275343  java.util.Hashtable$Entry[]
24135760        603394  java.util.ArrayList
22612816        115641  java.util.HashMap$Entry[]
19871936        620998  java.util.Date
19642320        272810  java.util.concurrent.ConcurrentHashMap
18644208        224156  int[]
17608256        275129  java.util.Hashtable
14569296 303527 java.util.concurrent.ConcurrentHashMap $HashEntry
13089600        272700  java.beans.PropertyChangeSupport
13054072        97229   * ConstMethodKlass
12340480        154256  org.apache.tomcat.util.buf.MessageBytes
11679960        97229   * MethodKlass
10593856        165529  org.apache.tomcat.util.buf.ByteChunk
10529104        10652   * ConstantPoolKlass




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Paul Lindner
[EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to