Re: leak on graceful restarts

2008-10-19 Thread Jim Jagielski


On Oct 18, 2008, at 3:04 PM, Rainer Jung wrote:




Ruediger Pluem schrieb:


On 10/18/2008 01:25 AM, Paul Querna wrote:

Looking at a problem that seems easy to re-produce using un-patched
trunk, 2.2.10 and 2.0.63.

Using a graceful restart causes higher memory usage in the parent,  
which

is then passed on to the 'new' children processes.

And, at least over here, httpd consistently grows in RSS, without  
any

obvious cause.

Seems reproducible on Ubuntu and Darwin, using 2.2.10, 2.0.63 and  
trunk.


Any ideas?


Two quick thoughts:

1. Memory fragmentation in the allocator lists (we had this  
discussion either here

  or on [EMAIL PROTECTED] a short time ago).

2. At some locations we use a global pool (process-pool) to  
allocate memory, e.g. mod_ssl
  and when setting up the listeners. I haven't checked so far if  
this global pool usage is

  justified.


Using my production configurations on Solaris with 2.2.10 worker I can
only reproduce a leak during graceful restart when loading mod_ssl.  
The
memory size does not always increase though, after a couple of  
restarts

it decreases again, but not back to the previous minimum so over all
there is a small leak related to restarts.



This is weird... I can recreate this under OS X but not under Sol10,
and only with mod_ssl in the mix as well. But at least it appears that
mod_ssl is the main culprit.



Re: leak on graceful restarts

2008-10-19 Thread Ruediger Pluem


On 10/19/2008 07:25 PM, Jim Jagielski wrote:
 
 On Oct 18, 2008, at 3:04 PM, Rainer Jung wrote:
 


 Ruediger Pluem schrieb:

 On 10/18/2008 01:25 AM, Paul Querna wrote:
 Looking at a problem that seems easy to re-produce using un-patched
 trunk, 2.2.10 and 2.0.63.

 Using a graceful restart causes higher memory usage in the parent,
 which
 is then passed on to the 'new' children processes.

 And, at least over here, httpd consistently grows in RSS, without any
 obvious cause.

 Seems reproducible on Ubuntu and Darwin, using 2.2.10, 2.0.63 and
 trunk.

 Any ideas?

 Two quick thoughts:

 1. Memory fragmentation in the allocator lists (we had this
 discussion either here
   or on [EMAIL PROTECTED] a short time ago).

 2. At some locations we use a global pool (process-pool) to allocate
 memory, e.g. mod_ssl
   and when setting up the listeners. I haven't checked so far if this
 global pool usage is
   justified.

 Using my production configurations on Solaris with 2.2.10 worker I can
 only reproduce a leak during graceful restart when loading mod_ssl. The
 memory size does not always increase though, after a couple of restarts
 it decreases again, but not back to the previous minimum so over all
 there is a small leak related to restarts.

 
 This is weird... I can recreate this under OS X but not under Sol10,
 and only with mod_ssl in the mix as well. But at least it appears that
 mod_ssl is the main culprit.

In 2.2.x I guess we leak in ssl_scache_shmcb_init when we create a shared
memory segment passing apr_shm_create a global pool. Maybe the actual
amount of the leak depends on the platform specific details of the
shm implementation. As said this is just a guess.
AFAICT this leak does not happen on trunk.

Regards

RĂ¼diger


Re: leak on graceful restarts

2008-10-18 Thread Ruediger Pluem


On 10/18/2008 01:25 AM, Paul Querna wrote:
 Looking at a problem that seems easy to re-produce using un-patched
 trunk, 2.2.10 and 2.0.63.
 
 Using a graceful restart causes higher memory usage in the parent, which
 is then passed on to the 'new' children processes.
 
 The issue seems to appear in all the Worker, Event and Prefork MPMs.
 
 Compile up httpd without apr pool debugging enabled, start it as normal,
  and then check the memory usage:
 
 $ ./apachectl start
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  2672 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start
 
 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3192 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start
 
 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3236 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start
 
 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3280 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start
 
 (2672 - 3192 - 3236 - 3280)
 
 And, at least over here, httpd consistently grows in RSS, without any
 obvious cause.
 
 Seems reproducible on Ubuntu and Darwin, using 2.2.10, 2.0.63 and trunk.
 
 Any ideas?

Two quick thoughts:

1. Memory fragmentation in the allocator lists (we had this discussion either 
here
   or on [EMAIL PROTECTED] a short time ago).

2. At some locations we use a global pool (process-pool) to allocate memory, 
e.g. mod_ssl
   and when setting up the listeners. I haven't checked so far if this global 
pool usage is
   justified.


Regards

RĂ¼diger


Re: leak on graceful restarts

2008-10-18 Thread Rainer Jung


Ruediger Pluem schrieb:
 
 On 10/18/2008 01:25 AM, Paul Querna wrote:
 Looking at a problem that seems easy to re-produce using un-patched
 trunk, 2.2.10 and 2.0.63.

 Using a graceful restart causes higher memory usage in the parent, which
 is then passed on to the 'new' children processes.

 The issue seems to appear in all the Worker, Event and Prefork MPMs.

 Compile up httpd without apr pool debugging enabled, start it as normal,
  and then check the memory usage:

 $ ./apachectl start
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  2672 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start

 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3192 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start

 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3236 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start

 $ ./apachectl graceful
 $ ps alx | grep 18459
 1  1000 18459 1  20   0 152752  3280 674009 Ss   ?  0:00
 /home/chip/temp/httpd/bin/httpd -k start

 (2672 - 3192 - 3236 - 3280)

 And, at least over here, httpd consistently grows in RSS, without any
 obvious cause.

 Seems reproducible on Ubuntu and Darwin, using 2.2.10, 2.0.63 and trunk.

 Any ideas?
 
 Two quick thoughts:
 
 1. Memory fragmentation in the allocator lists (we had this discussion either 
 here
or on [EMAIL PROTECTED] a short time ago).
 
 2. At some locations we use a global pool (process-pool) to allocate memory, 
 e.g. mod_ssl
and when setting up the listeners. I haven't checked so far if this global 
 pool usage is
justified.

Using my production configurations on Solaris with 2.2.10 worker I can
only reproduce a leak during graceful restart when loading mod_ssl. The
memory size does not always increase though, after a couple of restarts
it decreases again, but not back to the previous minimum so over all
there is a small leak related to restarts.

Regards,

Rainer



leak on graceful restarts

2008-10-17 Thread Paul Querna
Looking at a problem that seems easy to re-produce using un-patched 
trunk, 2.2.10 and 2.0.63.


Using a graceful restart causes higher memory usage in the parent, which 
is then passed on to the 'new' children processes.


The issue seems to appear in all the Worker, Event and Prefork MPMs.

Compile up httpd without apr pool debugging enabled, start it as normal, 
 and then check the memory usage:


$ ./apachectl start
$ ps alx | grep 18459
1  1000 18459 1  20   0 152752  2672 674009 Ss   ?  0:00 
/home/chip/temp/httpd/bin/httpd -k start


$ ./apachectl graceful
$ ps alx | grep 18459
1  1000 18459 1  20   0 152752  3192 674009 Ss   ?  0:00 
/home/chip/temp/httpd/bin/httpd -k start


$ ./apachectl graceful
$ ps alx | grep 18459
1  1000 18459 1  20   0 152752  3236 674009 Ss   ?  0:00 
/home/chip/temp/httpd/bin/httpd -k start


$ ./apachectl graceful
$ ps alx | grep 18459
1  1000 18459 1  20   0 152752  3280 674009 Ss   ?  0:00 
/home/chip/temp/httpd/bin/httpd -k start


(2672 - 3192 - 3236 - 3280)

And, at least over here, httpd consistently grows in RSS, without any 
obvious cause.


Seems reproducible on Ubuntu and Darwin, using 2.2.10, 2.0.63 and trunk.

Any ideas?

Thanks,

Paul