httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Bannert <aa...@clove.org>
Subject Re: load spikes revisited
Date Fri, 18 Jan 2002 06:53:51 GMT
On Thu, Jan 17, 2002 at 10:43:18PM -0800, Brian Pane wrote:
[snip]
> >prefork was changed to do a apr_poll before the accept, even in the single
> >listen case, on Nov 10.  The polls seem to get added to the herd of selects 
> >that
> >wake up several times a second for no real good reason.  We need to get rid 
> >of
> >this poll once again.

We should get rid of the poll() for S_L_U_A, but I think that would
only treat the symptom, since it would come back when we had multiple
listeners.  Personally, I think poll() is itself the problem, and my
theory is that poll() has a thundering hurd problem on this particular
version of FreeBSD. We can try this out by #undef'ing HAVE_POLL in
srclib/apr/network_io/unix/poll.c, so we use select() instead, which
is what we used to do before Nov 10th.

> So is the situation basically this:
>  * Single listener unserialized accept is enabled on daedalus,
>  * We thus have all the idle httpd procs doing a poll before the
>    accept,
>  * And the spikes in load happen because of the thundering herd
>    waking up from the poll when a connection arrives?
> 
> If that's the root cause, then I guess 2.0.29 or later with, say,
> pthread mutex accept serialization should be able to run without
> load spikes on daedalus?

I agree, but I have the same reply as above. This may only hide the
problem.

-aaron

Mime
View raw message