Hi Oleg The reason for having 1 connection per route and 2 threads created in my test is to perform detailed analysis of what happens, then see whether it scales up. Obviously harder to debug with more than a few threads/connections. I would expect the first thread to create the connection, take x ms, then release the connection to the second thread, which takes a further y ms to execute ...
I have uploaded sanitized full wire and context log (debug level) with final thread times - note the TSCCM 'shutting down' statement, not sure why ... anyway it might not be relevant. olegk wrote: > > On Thu, 2011-06-30 at 03:32 -0700, bnijjhar wrote: >> Hi >> I have implemented a global HttpClient with a >> ThreadSafeClientConnManager. >> The default max connections per route is set to 1. I also set up the URL >> to >> access to be on another machine. >> I then create and start 2 threads to call my HttpClient. > > Having two threads and one HTTP connection looks somewhat, well, strange > to me. > > >> The first one >> completes in a reasonable time; the second one takes a bit too long. When >> I >> analyse the context logs, I see that in the first thread, the time >> between >> the following two messages is very close: >> >> 2011-06-29 14:37:56,981 Thread-1 DEBUG >> org.apache.http.impl.client.DefaultHttpClient - Connection can be kept >> alive indefinitely >> 2011-06-29 14:37:56,981 Thread-1 DEBUG >> org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager - Released >> connection is reusable. >> >> However, I am consistently seeing a 1 second gap for the second thread >> (which was notified at 14:37:56.981 that a connection was now available, >> as >> expected) between these two messages: >> >> 2011-06-29 14:37:56,997 Thread-2 DEBUG >> org.apache.http.impl.client.DefaultHttpClient - Connection can be kept >> alive indefinitely >> 2011-06-29 14:37:58,169 Thread-2 DEBUG >> org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager - Released >> connection is reusable. >> >> I have tried adding lines such as EntityUtils.consume(entity) and >> inputstream.close() but they made no difference (it seems that >> connections >> are released anyway without them according to the debug above). >> >> Could anyone explain this gap? If the URL I connect to is on my local >> machine, it doesn't seem to occur ... Obviously, it does mean that my >> performance isn't what I'd like it to be (or feel confident in). > > Post a _complete_ wire / context log of the session. > > Oleg > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > http://old.nabble.com/file/p31963089/Debug%2Bfor%2Bforums.txt Debug+for+forums.txt -- View this message in context: http://old.nabble.com/Threads-sometimes-wait-for-unnecessary-%7E1s-to-access-connections-in-pool-for-HttpClient-4.1.1-tp31961903p31963089.html Sent from the HttpClient-User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
