cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akitoshi Yoshida (JIRA)" <>
Subject [jira] [Commented] (CXF-6239) Out of memory when using Async connections in Apache CXF
Date Wed, 04 Mar 2015 14:47:05 GMT


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:
>             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
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

View raw message