httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sameer <sam...@c2.net>
Subject Re: systems without accept_mutex, bug?
Date Sat, 19 Apr 1997 05:40:42 GMT
	I've seen more than one report (2, exactly) where connections
to port X hang, but a connection to port Y works, and then port X
starts working again. (Where Listen X and Listen Y are set)

	I will tell one of them to turn on one of the SERIALIZED
things and let me know what happens.


> I've been peering at child_main.  Suppose you're on a system which doesn't
> use accept_mutex().  Suppose that your configuration has multiple Listens
> so that you've got multiple sockets to select() on.  Now, all the idle
> children end up in select() at the same time.  It is possible that
> connections will be waiting on multiple sockets.  So multiple children
> leave select() with multiple sockets listed in main_fds.
> 
> All those children wander down to the accept().  Notice that they're all
> going to run accept() on the *same socket* (well assuming that main_fds is
> the same).  Our listening sockets are blocking, so all but one of them is
> about to block in accept().
> 
> That doesn't seem like a good situation to be in.  It results in
> starvation of the other sockets.
> 
> Why *doesn't* this happen?  I'm assuming it doesn't, because otherwise
> architectures without USE_FCNTL_SERIALIZED_ACCEPT or
> USE_FLOCK_SERIALIZED_ACCEPT would have real problems handling Listen
> directives.
> 
> Maybe it is happening, but not as bad as it could be.  For example, it
> could just be that a few children get blocked like this, or that the
> sockets are busy enough to not really notice it... 
> 
> Dean
> 
> 


-- 
Sameer Parekh					Voice:   510-986-8770
President					FAX:     510-986-8777
C2Net
http://www.c2.net/				sameer@c2.net

Mime
View raw message