I am currently looking at a core of a httpd 2.4 process using the event MPM 
that consumed a lot of memory
(core dump file size about 1.4 GB).
While taking the core actually no request was processed by this process.
I suspect a memory leak in a 3rd party closed source module.
As I have no view in the 3rd party module I tried to find out the heap memory 
usage of httpd and the included modules.

For this I used the new dump_pool_and_children I added to .gdbinit which 
delivers me the memory used by all
pools below 'apr_global_pool' and the amount of memory in the allocator free 
lists associated to these pools.
This delivered a usage of only a few MB. Of course I am aware that the process 
consumes additional memory for stack,
static data and text segments, but this usage should be static.

Is there any heap usage by httpd that I could have missed?

- We do not use the unmanaged pools from APR. So I should have caught all pools.
- I do no think that we use allocators that are not used by a pool. Hence I 
should have caught all allocators and
  its free lists.
- As no request was processed when I captured the core (all worker threads were 
waiting for work) I doubt that missed
  any or at least large memory consuming buckets.

So possible other consumers of memory apart from the 3rd party module that come 
to my mind:

- Could any of the glibc (httpd was running on a Linux system) functions 
wrapped by APR consume a lot of memory?
- As far as I researched glibc by default should return memory to the OS if 
more then 128 KB are free at the top of
  the heap.

Regards

Rüdiger

Reply via email to