On Mon, 2006-11-27 at 12:26 +0000, David Cotter wrote: > Hi there, > > I am having a problem with too many open files on my server. I am using > HttpClient v.3.0 and the server application is a proxy web app that > retrieves the content using HttpClient and passes it back to the user using > a Tomcat servlet. I am serving 1000s of different users with several sever > requests per second. As time goes on the JVM memory usage steadily increases > as the number of open files/sockets in CLOSE_WAIT state on the Linux machine > increases. I can see from inspection that many of the open files are socket > connection to third party sites opened with HttpClient. > > For every method executed I use a shared MultiThreadedHttpConnectionManager > and always call method.releaseConnection(). > > I have instantiated IdleConnectionTimeoutThread and also have another > thread that occasionally calls: > multiThreadedHttpConnectionManager.closeIdleConnections(idleTimeoutMillis); > multiThreadedHttpConnectionManager.deleteClosedConnections(); > > I have overridden MultiThreadedHttpConnectionManager.releaseConnection () > and included a connection.close() in this function but have not seen any > results - always steadily increasing open files. > > I have seen reference to overriding > MultiThreadedHttpConnectionManager.releaseConnection () to force sockets to > close on this list but nothing concrete as to what to put in the overrided > function. > > I would appreciate any help on this. >
David, The only rational explanation I can think of is that sockets remain in the CLOSE_WAIT state due to some OS level settings. Calling #close() on all connections released back to the connection manager should definitely leave no sockets in the CLOSE_WAIT state. Oleg > Regards, > David --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
