*BSD News Article 93433


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!news.mel.connect.com.au!munnari.OZ.AU!news.ecn.uoknor.edu!feed1.news.erols.com!newsfeeds.sol.net!uniserve!van-bc!news.mindlink.net!nntp.portal.ca!news.bc.net!unixg.ubc.ca!rover.ucs.ualberta.ca!news
From: Marc Slemko <marcs@znep.com>
Newsgroups: comp.unix.bsd.bsdi.misc
Subject: Re: Why is my load so high?
Date: 13 Apr 1997 03:15:18 GMT
Organization: University of Alberta
Lines: 28
Message-ID: <5ipj46$hvc@pulp.ucs.ualberta.ca>
References: <5iek0e$ho$1@madmax.keyway.net> <5ii3to$52n@nuhou.aloha.net>
NNTP-Posting-Host: gpu5.srv.ualberta.ca
X-Newsreader: NN version 6.5.0 (NOV)
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.bsdi.misc:6634


In <5ii3to$52n@nuhou.aloha.net> eric@satanic.org (Eric Sorenson) writes:

>Are you still running the adminweb apache httpd server?  There
>is a known (to me at least) bug with Apache on bsd that will 
>run the load up to 1.0 and leave it hovering there until the
>httpd receives a SIGHUP.  Try 'kill -term `cat /var/run/adminweb.pid`'
>and see if your load average doesn't drop dramatically.  Haven't
>heard of a fix yet, and I've seen this since I first started running
>Apache on BSDI two years ago.

>P.S. I think it's a bug in the reporting of load not in actually
>_running_ anything so there's not necessarily a runaway process
>(i.e. Pine which does that a lot) that's sucking up CPU cycles
>in between 'top' polls.

On most BSD implementations, when an accept() is done then the
kernel will wake up all processes blocked on it.  Apache currently
handles its child processes by having them all block on accept().

This means that if you have a few dozen idle servers, they will all be
woken up when a connection comes in; all but one will then be put back
to sleep.  The cost isn't overly high to do this, but it can falsely
increase the load average to obscene numbers (250 once under FreeBSD
with good interactive response).

The FreeBSD code was recently changed to only wakeup one of the
processes when a connection is accepted, avoiding this problem.  
Not sure what the BSDI code does.