<br><font size=3 face="Times New Roman">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. </font>
<br>
<br><font size=3 face="Times New Roman">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&#8217;ve been trying to figure out is
where this behavior arises from-- the GHC rts, the Network library, the
underlying C libraries. </font>
<br>
<br><font size=3 face="Times New Roman">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?</font>
<br>
<br><font size=3 face="Times New Roman">thanks,</font>
<br><font size=3 face="Times New Roman">&nbsp; Jeff</font>
<br>
<br>
<span style="font-family:'Arial',sans-serif; font-size:8pt; color:#000000">---<br>
<br>
This e-mail may contain confidential and/or privileged information. If you <br>
are not the intended recipient (or have received this e-mail in error) <br>
please notify the sender immediately and destroy this e-mail. Any <br>
unauthorized copying, disclosure or distribution of the material in this <br>
e-mail is strictly forbidden.</span>