You only need once instance of MultiThreadedConnectionManager and
HttpClient for your application. It looks like you are creating numerous
copies of these objects. Each time you do that, you are creating a
separate connection pool. I suspect that's why you are 'leaking'
connections.

Try declaring MultiThreadedConnectionManager and HttpClient objects as
static.

--Steve

-----Original Message-----
From: Ole Matzura [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, March 22, 2006 6:38 AM
To: HttpClient User Discussion
Subject: java.net.BindException when loadtesting..

Hi all!

I have a "strange" problem.. I'm running loadtests on a local IIS using 
a MultiThreadedConnectionManager created as follows:

MultiThreadedHttpConnectionManager connectionManager = new 
MultiThreadedHttpConnectionManager();
connectionManager.getParams().setDefaultMaxConnectionsPerHost( 500 );
connectionManager.getParams().setMaxTotalConnections( 2000 );
httpClient = new HttpClient(connectionManager);

(i've tried lower values with the same results)

My loadtest runs 10 parallell threads which create new PostMethods 
containing a "Connection: close" header for each request. After each 
request I call postMethod.releaseConnection().. (in a finally block)

After about 3600 requests i get an exception when calling 
httpClient.executeMethod( postMethod );

java.net.BindException: Address already in use: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:507)
    at java.net.Socket.connect(Socket.java:457)
    at java.net.Socket.<init>(Socket.java:365)
    at java.net.Socket.<init>(Socket.java:238)
    at 
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.crea
teSocket(DefaultProtocolSocketFactory.java:79)
    at 
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.crea
teSocket(DefaultProtocolSocketFactory.java:121)
    at 
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:70
6)
    at 
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpCon
nectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
    at 
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMe
thodDirector.java:386)
    at 
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMetho
dDirector.java:170)
    at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:3
96)
    at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:3
24)

running netstat from the command line shows a list of thousands of 
active connections.. shouldn't these have been closed? IIS returns the 
Connection: close header in the response. Why am I running out of 
connections/sockets/ports/whatever? What am I doing wrong? Can I "force"

the closing of the requests some other way?

thanks for any help!

regards,

Ole


---------------------------------------------------------------------
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]

Reply via email to