[
https://issues.apache.org/jira/browse/AXIS2-2883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12664441#action_12664441
]
Chi Chi commented on AXIS2-2883:
--------------------------------
Michael, thanks for your response!
I think, in fact, my problem is slightly different from the original one
posted. I am working on a high load application, calling a webservice
approximately every second! I am currently doing a performance test and the
number of CLOSE_WAITs rises gradually over the course of the test.
I therefore do not think calling System.gc() is an option, certainly not EVERY
time a webservice is called! For the moment I will have to leave this to the
JVM.
So, does anyone actually know what the problem is? Is it due to failed service
calls (eg - AxisFaults) or successful calls? Why does garbage collecting fix
it? Presumably there is something called from the finalize method on the stub
object? Can this not be called manually?
Back to the workaround:
"The workaround is to keep a reference to the connection manager and force it
to close idle/stale connections. "
Does anyone know how I would go about implementing this change?
Thanks
Jay
> 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
> Assignee: Deepal Jayasinghe
> 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.