Re: Apache Children Stuck on futex

Max Barry <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
On 26/10/11 14:56, Max Barry wrote:
> I'm trying to solve a long-running problem whereby my Apache mod_perl
> processes get stuck in a "FUTEX_WAIT" state instead of exiting.
> 
> I believe this is the same issue as reported here:
> http://www.gossamer-threads.com/lists/modperl/modperl/99879
> 
> The problem occurs fairly frequently following a burst of traffic, when
> Apache spawns new processes, then attempts to cull them afterward. It
> also occurred, before I disabled this, when Apache tried to cull a
> process upon reaching MaxRequestsPerChild.

Further to this, I've found that the problem occurs even on a fresh
Apache/mod_perl install; i.e. after completely removing Apache &
mod_perl, including /etc/apache2/, and doing only this:

  1. sudo apt-get install apache2-mpm-worker libapache2-mod-perl2
apache2-doc

  2. Edit the 'default' site thusly:

--- /etc/apache2/sites-available/default.original	2011-10-27
08:44:11.383803928 +1100
+++ /etc/apache2/sites-available/default	2011-10-27 08:44:51.795391116 +1100
@@ -19,6 +19,9 @@
 		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 		Order allow,deny
 		Allow from all
+
+		SetHandler perl-script
+		PerlResponseHandler ModPerl::RegistryBB
 	</Directory>

 	ErrorLog ${APACHE_LOG_DIR}/error.log

  3. Add a low 'MaxRequestsPerChild' directive (not strictly necessary,
but makes the problem much more visible):

--- /etc/apache2/httpd.conf.original	2011-10-27 08:52:48.898361041 +1100
+++ /etc/apache2/httpd.conf	2011-10-27 08:58:52.384091605 +1100
@@ -0,0 +1 @@
+MaxRequestsPerChild   10

  4. sudo /etc/init.d/apache2 restart

  5. ab -n 450 -c 175 http://localhost/cgi-bin/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
apr_poll: The timeout specified has expired (70007)
Total of 426 requests completed

(The number "426" above varies: sometimes it's as low as 400, sometimes
all requests complete. Usually, though, it's around 430.)

I've also established that:

* The problem occurs regardless of whether ModPerl::Registry,
ModPerl::RegistryBB, or ModPerl::PerlRun is used.

* The problem occurs even when all Apache modules are disabled except
for alias, authz_host, and mod_perl.

* The problem occurs even when no script is being run: i.e. Apache is
asked for "/cgi-bin/nonexistentscript.cgi", or just "/cgi-bin/".

This is pretty perplexing.

Max.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.