[ 
https://issues.apache.org/jira/browse/AXIS2-4742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Prakash C Rao closed AXIS2-4742.
--------------------------------

    Fix Version/s:     (was: 1.6)
       Resolution: Not A Problem

I created stub pool as suggested in one of Amila's blog and this gives much 
efficient memory footprint for Axis2 1.5.1 and hence i'm closing this issue. 
From Amila's blog i understood that creating a new stub for each invocation is 
expensive and creating a stub pool & re-using stubs for various invocation 
reduced the memory footprint. 

I thought the below links would be useful for others. This gives info on how to 
create best client code for Axis2 1.5.1 & stub pool implementation for 
efficient memory footprint.

http://www.5341.com/list/56/223470.html
http://www.5341.com/list/56/222882.html#
http://amilachinthaka.blogspot.com/ 






> Axis2 1.5.1 memory issues when invoked stub client in multiple threads
> ----------------------------------------------------------------------
>
>                 Key: AXIS2-4742
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4742
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.5.1
>         Environment: Windows XP professional, service hosted in tomcat 5.0.28 
> & Tomcat 6.0.26, JRE version 1.5.0_14, 32 bit OS, Total Physical Memory - 4 
> GB, Total RAM - 1.58 GB,Total VM - 2.00 GB,Available VM - 1.96 GB,Processor - 
> x86 family 6 Model Intel 2494 Mhz
>            Reporter: Prakash C Rao
>            Priority: Blocker
>         Attachments: gclog_profilereport_client_service_code.zip, Memory 
> Pattern Screenshot.doc
>
>
> We are using Axis 1.4 library for our current production system and we are 
> hitting out of memory due to de-serialization bug in Axis 1.4. 
> https://issues.apache.org/jira/browse/AXIS-2698
> Later we found Apache has stopped working on Axis1 generation (1.4 is the 
> last version) and has moved to Axis2 generation. I did lot of reading and 
> found good things (especially on memory footprint) about Axis2 and we made a 
> decision to move to Axis2 1.5.1. Before using this for our product, we did a 
> small POC on Axis2 1.5.1 confirm what is being claimed (as far as memory foot 
> print is concerned) is really true. 
> In my POC I wrote a sample application and I invoked 4 simple service APIs in 
> multiple threads. I see memory growing drastically up to 900MB - 1GB and lot 
> of GC happening. And even after full GC the memory stays up for some 
> duration. I read lot of articles on internet about Axis2 and came to know 
> that there were memory leak issues in Axis2 1.4 which was fixed in Axis2 1.5 
> but I still see memory issues in Axis2 1.5.1. I also did POC with our product 
> code using Axis2 1.5.1 and I see same results (high memory usage) when I 
> invoke stub using multiple threads.
> From the articles I came to know that stub is not thread safe but I've made 
> sure thread safety for stub creation. I'm creating only one configuration 
> context object and I'm creating new stub for each invocation which uses that 
> configuration context. After the invocation, I'm cleaning up the stub & 
> transport to ensure all cleanups are being done properly. I'm also caching 
> http client for better performance and setting auto release flags for proper 
> cleanup. I've followed all best practices that I Amila has suggested (thanks 
> very much Amila) in his various blogs. I also debugged Axis2 1.5.1 code to 
> see usage of various flags that I've set in the code. In spite of all this I 
> see lot of memory usage. In fact I see better results in Axis 1.4 as far as 
> memory is concerned. 
> I'm attaching the source code for client (rl.txt -> rename to rl.bat starts 
> the client in various threads), service, GC log & profiling report. From the 
> profiling I see huge references to the below objects that's being mentioned 
> in http://www.5341.com/list/56/222882.html
> java.util.concurrent.ConcurrentHashMap$Segment
> java.util.concurrent.locks.ReentrantLock$NonfairSync
> java.util.concurrent.ConcurrentHashMap$HashEntry[]
> One of Amila's blog talks about caching stub object but I'm afraid of socket 
> timeout if I use the same stub for longer period of time (hence I'm creating 
> new stub each invocation and cleaning up after call is done).
> Could you please help me out in this regard? 
> Btw, I should really thank Amila for most of his blogs on Axis2 (2 of them 
> I've listed below). It was really helpful for me.
> http://www.5341.com/list/56/222882.html
> http://amilachinthaka.blogspot.com/

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