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
