apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From INOUE Seiichiro <in...@ariel-networks.com>
Subject apr_pool memory usage (Re: [Fwd: APR_POOL_DEBUG??])
Date Fri, 23 Dec 2005 18:39:06 GMT
Hi, 

> Checking my module with a stress test (1440 reqs/min) I'm observing , 
> with top, that SIZE and RSS of httpd processes are growing.

I recommend you to check apr_allocator_max_free_set().

The following sample code shows the effect.
Without calling apr_allocator_max_free_set(), you can find the memory usage is growing rapidly.


///////////////// sample code starts
/* memory pool leak test.
 * @remark No error checks */
#include <stdio.h>
#include <apr_general.h>

int main(int argc, char **argv)
{
    apr_pool_t *mp;
    int i;
	
    apr_initialize();
    apr_pool_create(&mp, NULL);

    /* XXX Without this setting, memory usage is growing more than expected */
#define MY_POOL_MAX_FREE_SIZE	32
    {
        apr_allocator_t *pa = apr_pool_allocator_get(mp);
        if (pa) {
            apr_allocator_max_free_set(pa, MY_POOL_MAX_FREE_SIZE);
        }
    }

#define BASE_ALLOC_SIZE    (8*1024)
    i = 0;
    while (1) {
        apr_palloc(mp, BASE_ALLOC_SIZE + i);
        i++;
        if (i % 10000 == 0) {
            puts("press enter key (please check memory usage)");
            getchar();
        }
        apr_pool_clear(mp);
    }
    apr_terminate();
    return 0;
}
///////////////// sample code ends


- INOUE Seiichiro <inoue@ariel-networks.com>

Mime
View raw message