You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Jay Jacobs <ja...@lach.net> on 2000/06/02 00:12:25 UTC

Apache children hanging (not exiting)

With that previous thread of Apache children hanging up the server it made
me think of an issue I see quite frequently in development... When I stop
the mod_perl server, it won't exit properly (or fast) :

[warn] child process 8530 still did not exit, sending a SIGTERM
(multiplied by number of processes)

I've seen this on servers running really sloppy code as well as really
tight code (but a lot of it).  Eventually the children do die off, but it
takes about 15 seconds...

Could this be related to the aforemented thread?

Jay Jacobs


Re: Apache children hanging (not exiting)

Posted by Doug MacEachern <do...@covalent.net>.
On Thu, 1 Jun 2000, Jay Jacobs wrote:

> With that previous thread of Apache children hanging up the server it made
> me think of an issue I see quite frequently in development... When I stop
> the mod_perl server, it won't exit properly (or fast) :
> 
> [warn] child process 8530 still did not exit, sending a SIGTERM
> (multiplied by number of processes)
> 
> I've seen this on servers running really sloppy code as well as really
> tight code (but a lot of it).  Eventually the children do die off, but it
> takes about 15 seconds...

from mod_perl.pod:
=item PERL_DESTRUCT_LEVEL

With Apache versions 1.3.0 and higher, mod_perl will call the
perl_destruct() Perl API function during the child exit phase.
This will cause proper execution of B<END> blocks found during server
startup along with invoking the B<DESTROY> method on global objects
who are still alive.  It is possible that this operation may take a
long time to finish, causing problems during a restart.  If your code
does not contain and B<END> blocks or B<DESTROY> methods which need to
be run during child server shutdown, this destruction can be avoided by
setting the I<PERL_DESTRUCT_LEVEL> environment variable to C<-1>.