CLOSE_WAIT slowly building up over the period of time.
------------------------------------------------------

                 Key: AXIS2-2883
                 URL: https://issues.apache.org/jira/browse/AXIS2-2883
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: client-api
    Affects Versions: 1.1
         Environment: Operating System : Solaris 
Axis2 Version : 1.1
Application Server : weblogic 8.1 SP6
Using with Cocoon and weblogic DSP
            Reporter: Lakshmanan Venkatachalam
            Priority: Critical


I am experiencing theconstant increase in close wait in the production 
environment over the period 7 days. 

We are using Synchronous webservices and we are calling two webservices 24 
times every day. We have allocated the maximum of 1.5 GB per application 
instance and we have two application instances. We are utilizing maximum of 250 
- 300 MB in average. So Full GC never runs in our environment.

It seems like the client API ServiceClient.java is not cleaning up the 
resources associated with this component. We are creating the new ServiceClient 
component on every call we have for webservices. Though we have called the 
cleanup() method at the end of every call to the webservices. At times its not 
getting executed.

But when we force garabage collection from the application, it was able to 
clear all the CLOSE_WAIT components. Since we have similar cleanup() call on 
finalize() method, it is able to do proper clean up when GC is collecting these 
objects.

Forcing GC cannot be a solution, I like to hear from axis2 experts on how we 
can resolve this problem properly and what could be the cause for this 
happening.

Below is our client code for your reference.

private WebServiceResponse invokeWebservice(OMElement inputElement,
                        Options options) throws WebServiceInvokerException {
                ServiceClient serviceClient = null;
                try {
                        serviceClient = new ServiceClient();

                        serviceClient.setOptions(options);

                        // This following line of code is used when we are using
                        // WS-Addressing. User has to make sure the addressing 
MAR file in
                        // class path before enable the following line of code
                        //

                        // serviceClient.engageModule(new QName(
                        // org.apache.axis2.Constants.MODULE_ADDRESSING));

                        // Invoking synchrounous webservice
                        //
                        OMElement result = 
serviceClient.sendReceive(inputElement);
                        
                        OMNode firstOMChild = result.getFirstOMChild();

                        // Conver the OMelements to XML String
                        //
                        Writer stringWriter = new StringWriter();
                        firstOMChild.serialize(stringWriter);
            serviceClient.cleanup();
                        stringWriter.flush();

                        // Return the Axis2WebserviceResponse
                        //
                        return new 
Axis2WebServiceResponse(stringWriter.toString());

                } catch (AxisFault afe) {
                        throw new WebServiceInvokerException(afe);
                } catch (XMLStreamException xse) {
                        throw new WebServiceInvokerException(xse);
                } catch (IOException ioe) {
                        throw new WebServiceInvokerException(ioe);
                } finally {
                        try {
                                serviceClient.cleanup();
                serviceClient=null;
                        } catch (AxisFault axisFault) {
                                //
                        }
                }

        }
}

options are:

Options options = new Options();
                options.setTo(targetEPR);
                options.setUseSeparateListener(false);
                options.setAction(wsRequest.getAction());
                options.setTimeOutInMilliSeconds(600000);
                options.setTransportInProtocol("http");
                
options.setProperty(org.apache.axis2.context.MessageContextConstants.CHUNKED, 
org.apache.axis2.transport.http.HTTPConstants.HEADER_TRANSFER_ENCODING);


 

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to