From: Jeremy Howard (no email)
Date: Wed May 01 2002 - 19:52:34 EDT
I've seen a couple of problems over the last few weeks with master
apparently failing to correctly maintain the prefork pool. We
particularly see this problem with pop3d, which has more
connects/disconnects than IMAP because of the nature of the protocol.
The first issue is that in shut_down() sockets are not closed. It seems
that this can leave sockets in CLOSE_WAIT state in certain error
situations where popd_reset() is not called.
The second issue is that we sometimes see sockets remain in a CLOSE_WAIT
state because there is still data to be read. It appears that
prot_fill() should be called in popd_reset() and shut_down().
The third issue is that when a process fails to shutdown correctly, such
as if it segfaults, master does not seem to correctly keep track of the
child process count. As a result, eventually the pool runs out and no
more connections are accepted.
Do the resolutions to the first two issues sound correct (we have made
these changes and it seems to have fixed things for us)? Does anyone
have a fix for the third issue?
|
|
|