dons at galois.com
Thu Oct 9 14:56:02 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?
Can you say which GHC you used, and whether you used the threaded
runtime or non-threaded runtime?
More information about the Glasgow-haskell-users