thread/socket behvior

Jeff Polakow jeff.polakow at
Thu Oct 9 14:53:18 EDT 2008

We have a server that accepts messages over a socket, spawning threads to 
process them. Processing these messages may cause other, outgoing 
connections, to be spawned. Under sufficient load, the main server loop 
(i.e. the call to accept, followed by a forkIO), becomes nonresponsive. 

A smaller distilled testcase reveals that when sufficient socket activity 
is occurring, an incoming connection may not be responded to until other 
connections have been cleared out of the way, despite the fact that these 
other connections are being handled by separate threads. One issue that 
we?ve been trying to figure out is where this behavior arises from-- the 
GHC rts, the Network library, the underlying C libraries. 

Have other GHC users doing applications with large amounts of socket usage 
observed similar behavior and managed to trace back where it originates 
from? Are there any particular architectural solutions that people have 
found to work well for these situations?



This e-mail may contain confidential and/or privileged information. If you 
are not the intended recipient (or have received this e-mail in error) 
please notify the sender immediately and destroy this e-mail. Any 
unauthorized copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Glasgow-haskell-users mailing list