httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marc G. Fournier" <scra...@hub.org>
Subject Re: FreeBSD 4.x and Apache2: worker MPM issue
Date Tue, 02 Mar 2004 15:47:55 GMT
On Mon, 1 Mar 2004, Justin Erenkrantz wrote:

> What we believed was that it was related to race conditions inside the
> OS scheduler handler where our poll calls got mixed up with the
> scheduler's polls.  We had it tracked down to some gnarly stuff inside
> the libc_r scheduler and gave up...

Note that *BSD is looking at a 4.10 RSN, and I'm trying to fight for
trying to get this fixed, if its possible, which is why I'm trying to come
up with some data to fight with ...

Is there anywhere that there is a summary of this "gnarly stuff"?
Something you could point me at, that I can use/question?

> > so am I mis-configuring something?  I'm running the default httpd.conf,
> > and the worker stuff is setup as:
> >
> > <IfModule worker.c>
> > StartServers         2
> > MaxClients         150
> > MinSpareThreads     25
> > MaxSpareThreads     75
> > ThreadsPerChild     25
> > MaxRequestsPerChild  0
> > </IfModule>
> >
> > so I would have expected no more then 4 processes to be running, no?
>
> Well, I'd expect it to be no more than 6 (150 / 25).  But, yah, I'm not making
> sense of your 'ps auxl' output either.  Is it possible that FreeBSD is showing
> the threads as processes?  That'd make the count about right if there is only
> one process.  (Linux used to do that, but I forget *BSD's behavior.)
>
> I also know that you must have two worker processes to trigger it.  You may
> need to set 'MinSpareThreads' to 50 to ensure that you always have two
> processes up.  If you look in STATUS ("FreeBSD, threads, and worker MPM"
> entry) that is the other pre-requisite.

k, changed it to:

StartServers         3
MaxClients         150
MinSpareThreads     50
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0

ps auxl (shows the parent id so that I can find all children) shows:

pluto# ps auxl | grep 20098
root      20098  0.0  0.1  4516 2912  ??  Ss   11:44AM   0:00.06 /usr/local/sbin/     0 20098
    1   0   2  0  4516 2912 poll   Ss    ??    0:00.06 /usr/local/sbin/httpd
www       20101  0.0  0.1  6408 3056  ??  S    11:44AM   0:00.03 /usr/local/sbin/    80 20101
20098   0   2  0  6408 3056 poll   S     ??    0:00.03 /usr/local/sbin/httpd
www       20102  0.0  0.1  6408 3056  ??  S    11:44AM   0:00.02 /usr/local/sbin/    80 20102
20098   0   2  0  6408 3056 poll   S     ??    0:00.02 /usr/local/sbin/httpd
www       20103  0.0  0.1  6408 3056  ??  S    11:44AM   0:00.01 /usr/local/sbin/    80 20103
20098   0   2  0  6408 3056 poll   S     ??    0:00.01 /usr/local/sbin/httpd

which is what I would expect ...

now, running http_load with a rate of 2 (simple), I'm still left with
those three processes ...

19 fetches, 1 max parallel, 28823 bytes, in 10.0108 seconds
1517 mean bytes/connection
1.89795 fetches/sec, 2879.19 bytes/sec
msecs/connect: 157.772 mean, 189.588 max, 152.671 min
msecs/first-response: 173.843 mean, 244.612 max, 160.396 min
HTTP response codes:
  code 200 -- 19

increase it  by 10x, still three, and a telnet/GET after still responsive:

192 fetches, 9 max parallel, 291264 bytes, in 10.0123 seconds
1517 mean bytes/connection
19.1764 fetches/sec, 29090.6 bytes/sec
msecs/connect: 162.432 mean, 228.586 max, 152.396 min
msecs/first-response: 174.894 mean, 221.808 max, 159.584 min
HTTP response codes:
  code 200 -- 192

increase it to 50, jumped to four, then went back down to three, and a
telnet/GET after still responsive:

> http_load -rate 50 -seconds 10 /tmp/urls
433 fetches, 77 max parallel, 656861 bytes, in 10.003 seconds
1517 mean bytes/connection
43.2871 fetches/sec, 65666.5 bytes/sec
msecs/connect: 443.495 mean, 3411.55 max, 251.228 min
msecs/first-response: 417.855 mean, 3750.21 max, 269.668 min
HTTP response codes:
  code 200 -- 433

Great, so either it did get fixed at some point, and nobody has
acknowledge it, or I'm really doing something wrong trying to trigger it
:( that last one, if I read the notes on http_load, would have hit it 500
times in 10 seconds, which should have simulated a good load, I would have
thought?



----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664

Mime
View raw message