> Henrik Nordstrom wrote:
>
> > Run multiple "independent" Squid processes, all using the
> same backend
> > store. The only thing the processes share is
> > a) The backend store
> > b) The listening socket
> > c) Some IPC mechanism for sharing the accept() load
>
> Sharing the same listening socket can be a serious bootleneck
> for most UNIX
> systems. To my mind, it is recommended to have a process listening to
> requests and who is the unique owner of the listening socket.
> This process
> will dispatch the work to a set of other processes which will send the
> requested objects.
> We must not also use heavily IPC mechanisms as they can lower
> performance
> even in SMP computers (some implementations of IPC need to
> halt all the
> processors while accessing to a semaphore for example).
I think you are referring to the "thundering herd" problem.
Even if we went to multiple backend sharing the listen socket,
we wouldn't suffer it for many reasons:
- it would be sane for us to have one squid process
for each processor, not more. Thus the number of
cows in our herd would be quite limited.
- we wouldn't be waiting on accept(), since we'd
be busy select()ing most of the time.
- the thundering herd problem has been solved by many OSes,
usually by implementing "wake-up-one" semantics.
-- /kinkieReceived on Wed Oct 18 2000 - 04:08:31 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:12:50 MST