[Modules] apr_memcache client memory usage

Edward Rudd urkle at outoforder.cc
Tue Oct 16 09:54:09 EDT 2007


I'm working on a new release of apr_memcache that includes packports  
from apr-util SVN TRUNK. Please check the SVN trunk for apr_memcache  
and let me know if this issue still exists.

svn co http://svn.northnitch.com/apr_memcache/trunk/

On Oct 16, 2007, at 4:37 AM, André Cruz wrote:

> Hello.
>
> I'm having some memory related problems in a long running daemon  
> that uses the apr_memcache client to talk to a memcache server.  
> Basically the daemon uses up all the memory available in the  
> machine after a few months of usage. :) Using valgrind I was able  
> to pinpoint the guilty party which seems to be apr_memcache and  
> it's use of the apr pools.
>
> I normally create an apr pool which I pass to  
> apr_memcache_server_create() and then create sub-pools each time i  
> do a getp and destroy them afterwards. But it seems that with each  
> get the main pool is used also and this pool I can't destroy on  
> each iteration since I would have to create the server objects again.
>
> This seems related to: http://issues.outoforder.cc/view.php?id=68
>
> I attached a simple client that does a few gets and then just  
> exits. Running this inside valgrind yields the following memory usage:
>
> ==31208== 983,040 bytes in 120 blocks are still reachable in loss  
> record 3 of 3
> ==31208==    at 0x401C38B: malloc (vg_replace_malloc.c:149)
> ==31208==    by 0x403B961: apr_allocator_alloc (in /usr/lib/ 
> libapr-1.so.0.2.7)
> ==31208==    by 0x40550CA: apr_bucket_alloc_create_ex  
> (apr_buckets_alloc.c:87)
> ==31208==    by 0x405518C: apr_bucket_alloc_create  
> (apr_buckets_alloc.c:73)
> ==31208==    by 0x40607FC: mc_conn_construct (apr_memcache.c:324)
> ==31208==    by 0x405E6AD: create_resource (apr_reslist.c:123)
> ==31208==    by 0x405E78A: reslist_maint (apr_reslist.c:181)
> ==31208==    by 0x405EBF8: apr_reslist_create (apr_reslist.c:271)
> ==31208==    by 0x40606B1: apr_memcache_server_create  
> (apr_memcache.c:390)
> ==31208==    by 0x8048DD4: main (in /home/andre/test)
>
> If I increase the number of iterations of the cycle this memory  
> usage amount increases. Is there something wrong with my usage of  
> the apr pools? Should I be doing something else that's missing? I  
> even tried setting the free_max of the pool to "1" but that didn't  
> change anything, I suspect the pool is really full of data.
>
> Thanks for the help,
> André Cruz
>
>
> <apr_memcache_test.cpp>_______________________________________________
> Modules mailing list
> Modules at lists.outoforder.cc
> http://lists.outoforder.cc/mailman/listinfo/modules




More information about the Modules mailing list