httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roy T. Fielding" <field...@kiwi.ics.uci.edu>
Subject Re: night of the dead Apache
Date Sat, 01 Nov 1997 03:20:02 GMT
>You're running -X and expecting timeouts?  They don't happen under -X with
>my new timeout code... although I didn't intend that, I just realised it. 
>There's no parent to do the timeout. 
>
>Does removing OPTIMIZE_TIMEOUTS fix a normal multiprocess server? 

Nope, but it does change the repeatability.  I can get it to fail
at the same place using -X every time.  Without that, it seems to
fail on the first request after a child has been killed, maybe.
The parent is still in its timing loop:

time()                                          = 878352719
waitid(P_ALL, 0, 0xEFFFED58, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xEFFFCDD8, 0, 1000)                       = 0
time()                                          = 878352720
waitid(P_ALL, 0, 0xEFFFED58, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xEFFFCDD8, 0, 1000)                       = 0
time()                                          = 878352721
waitid(P_ALL, 0, 0xEFFFED58, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xEFFFCDD8, 0, 1000)                       = 0
time()                                          = 878352722
waitid(P_ALL, 0, 0xEFFFED58, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xEFFFCDD8, 0, 1000)                       = 0
time()                                          = 878352723
waitid(P_ALL, 0, 0xEFFFED58, WEXITED|WTRAPPED|WNOHANG) = 0
poll(0xEFFFCDD8, 0, 1000)                       = 0
time()                                          = 878352724
...  (I watched it for several minutes)

Here's how I reproduce it.  I reload a page that has 104 different
inlined images <http://kiwi.ics.uci.edu:8080/Icons/InLineIndex.html>
and then I load <http://kiwi.ics.uci.edu:8080/server-status> several
times.  It seems to lock-up on the second request after the kept-alive
connections are closed, which is about the same time the parent would
have killed off the one extra idle child (MaxSpareServers 4).  After
that, the server is effectively dead until I do a kill -USR1, at
which point I can repeat it again.

Whatever it is, we are stuck in a place without any timeout even when
OPTIMIZE_TIMEOUTS has been commented-out.

I know there is at least one thing broken -- it should not be doing
a read() if a read would block.  I'll see if I can fix that, since
this may be a case of too many interdependencies for straight debugging.

.....Roy

Mime
View raw message