You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "yeshascr (JIRA)" <ji...@apache.org> on 2010/04/08 15:31:36 UTC

[jira] Commented: (AXIS2-2931) CLONE -Web Service request loop causes many TIME_WAIT Connections & "BindException: Address already in use: connect"

    [ https://issues.apache.org/jira/browse/AXIS2-2931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12854931#action_12854931 ] 

yeshascr commented on AXIS2-2931:
---------------------------------

Hi .. I just wanted to know if this is fixed in 1.4 ? or do anyone has 1.4 with this patch put in .
Please let me know .

> CLONE -Web Service request loop causes many TIME_WAIT Connections & "BindException: Address already in use: connect"
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-2931
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2931
>             Project: Axis2
>          Issue Type: Bug
>    Affects Versions: 1.1.1, nightly
>         Environment: Windows XP, Tomcat, Axis2 nightly build (also encountered in 1.1.1), JiBX 1.1.3, Microsoft Windows XP [Version 5.1.2600], 126 GB free disk space, 1GB RAM.
>            Reporter: Gerry Holly
>            Priority: Critical
>         Attachments: 0001-AXIS2-2931-AXIS2-3478-Release-the-HTTP-connection.patch
>
>
> I am performing the following:
> - Executing a tight loop calling a singel web service
> - Using the same Stub over and over
> - Creating the Stub with a custom ConfigurationContext (see below)
> - Sending cleanup() to Stub after each message sent (although problem existed even before cleanup() was added)
> After approximately 4000 messages have been sent, an AxisFault is generated caused by the following exception (see below for full stack trace):
> 	java.net.BindException: Address already in use: connect
> It appears that connections from the client to Axis on Tomcat sometimes (but not always) remain in the TIME_WAIT state for several minutes.  There are 1200-1500 TIME_WAIT connections open when the AxisFault is generated.
> If I step through the web service messages in a debugger, the problem does not appear to occur, as the system eventually releases the connections after a minute or two.
> Also, if I insert a System.gc() in the client code each time it sends a message to the web service (the commented out line of code below), the AxisFault does not occur.  I have executed the loop over 60,000 times with the garbage collection included without generating an AxisFault.  There were only 400-700 connections in the TIME_WAIT state at a given time, but performance slowed down to a crawl.
> Here is the code I am using to create the Stub:
> 	HttpConnectionManagerParams connectionManagerParams = new HttpConnectionManagerParams();
> 	connectionManagerParams.setTcpNoDelay(true);
> 	connectionManagerParams.setStaleCheckingEnabled(true);
> 			
> 	MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
> 	connectionManager.setParams(connectionManagerParams);
> 	HttpClient httpClient = new HttpClient(connectionManager);
> 			
> 	ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
> 	configurationContext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
> 	configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
> 			
> 	stub = new MyServiceStub(configurationContext, target);
> 	
> 	boolean success = true;
> 	while(success) {
> 		success = stub.performService(records);
> 		stub.cleanup();
> 		//  System.gc();
> 	}
> Here is the complete stack trace:
> 	Exception in thread "main" org.apache.axis2.AxisFault: Address already in use: connect
> 		at org.apache.axis2.AxisFault.makeFault(AxisFault.java:377)
> 		at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:179)
> 		at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:73)
> 		at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:310)
> 		at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:202)
> 		at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:446)
> 		at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:330)
> 		at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294)
> 		at com.ws.service.MyServiceStub.performService(MyServiceStub.java:300)
> 		at com.ws.client.MyClient.main(MyClient.java:88)
> 	Caused by: 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:519)
> 		at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
> 		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 		at java.lang.reflect.Method.invoke(Method.java:585)
> 		at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:139)
> 		at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:124)
> 		at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
> 		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:346)
> 		at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:558)
> 		at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:176)
> 		... 8 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org