thread/socket behvior

Don Stewart dons at
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?

Hey Jeff,

Can you say which GHC you used, and whether you used the threaded
runtime or non-threaded runtime?

-- Don

More information about the Glasgow-haskell-users mailing list