[ https://issues.apache.org/jira/browse/AXIS2-2593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495023
]
Michele Mazzucco commented on AXIS2-2593:
-----------------------------------------
Cool. So I need the last nightly build to try it out, don't I?
Michele
> Web Service request loop causes many TIME_WAIT Connections & "BindException: Address
already in use: connect"
> -------------------------------------------------------------------------------------------------------------
>
> Key: AXIS2-2593
> URL: https://issues.apache.org/jira/browse/AXIS2-2593
> Project: Axis 2.0 (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: David Bueche
> Priority: Critical
> Attachments: diff.txt, JIRA-935_2593.zip, JIRA_test.tar.gz
>
>
> 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org