hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: java.net.BindException when loadtesting..
Date Wed, 22 Mar 2006 15:48:56 GMT
On Wed, 2006-03-22 at 12:38 +0100, Ole Matzura wrote:
> 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.

Well. Since you force connection close per each request, at some point
your process may create more sockets than the OS can allocate enough
local ports for. The fact that HttpClient called #close() on the
java.net.Socket instance may not necessarily mean that the local port
used by the socket can immediately be made available for a new socket

Oleg

>  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.createSocket(DefaultProtocolSocketFactory.java:79)
>     at 
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
>     at 
> org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
>     at 
> org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
>     at 
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
>     at 
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
>     at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
>     at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
> 
> 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: httpclient-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: httpclient-user-help@jakarta.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-user-help@jakarta.apache.org


Mime
View raw message