[
https://issues.apache.org/jira/browse/CXF-6239?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14346968#comment-14346968
]
Akitoshi Yoshida commented on CXF-6239:
---------------------------------------
I haven't had time to look at it.
My impression with the async service in CXF a while ago was its high
sensitivity to the traffic load, as it leads to too many sockets opened and
closed repeatedly under HTTP 1.1. i observed connection/bind related errors at
some point.
Regarding my question 3, I wanted to know whether a memory leak is suspected or
your high load is leads to some temporary or permanent clogging that is leads
to OOM. In this aspect, i was interested in other potential precursor error
leading to OOM.
The last was was meant to ask which web server you use.
If you could create a small test, that would be helpful and go faster.
regards, aki
> Out of memory when using Async connections in Apache CXF
> --------------------------------------------------------
>
> Key: CXF-6239
> URL: https://issues.apache.org/jira/browse/CXF-6239
> Project: CXF
> Issue Type: Bug
> Components: Configuration, Transports
> Affects Versions: 3.0.2
> Reporter: Atul Bisaria
> Priority: Critical
> Labels: performance
> Attachments: SnipImage1.JPG, SnipImage2.JPG
>
>
> We are creating a webservice client using Apache CXF version 3.0.2. We are
> using CXF's async based transport as described in
> http://cxf.apache.org/docs/asynchronous-client-http-transport.html. Following
> is the code snippet from our application:
> ---------------------------------------------------------------------------------------------
> Client proxy = ClientProxy.getClient(tisInterface);
> proxy.getBus().setProperty(AsyncHTTPConduitFactory.USE_POLICY,
> UseAsyncPolicy.ALWAYS);
> proxy.getBus().setProperty(AsyncHTTPConduitFactory.MAX_CONNECTIONS,
> parConfig.getOnlineNotificationThreadCount());
> HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
> HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
> httpClientPolicy.setReceiveTimeout(parConfig.getTimeout() * 1000);
> conduit.setClient(httpClientPolicy);
> ------------------------------------------------------------------------------------------
> With above configuration we are running a load of around 200 requests/second.
> On running this load we observe on Java memory analyser tool JVisualVM that
> heap size keeps on increasing continuously and after some time results in
> Java out of memory error.
> We have refactored our code to make sure that all the objects created by our
> application are properly garbage collected. The heap dump generated from
> JVisualVM shows that there are some classes used within Apache CXF library
> which might be causing this issue.
> Almost 94% of memory is retained by object of class
> org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager
> Is this an issue with the async transport provided by Apache CXF or we are
> missing something in code or configuration?
> Another observation is that when we use UseAsyncPolicy.NEVER instead of
> UseAsyncPolicy.ALWAYS in above code, the out of memory problem does not
> occur, but then the value set in AsyncHTTPConduitFactory.MAX_CONNECTIONS
> property does not work.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)