[ 
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)

Reply via email to