[erlang-questions] Erlang under high TCP/IP load

Anders Trondheim anders.trondheim@REDACTED
Mon Dec 11 11:38:18 CET 2006

I've been experimenting with ejabberd and Tsung. The setup consisted of two 
Erlang nodes on old PCs (Low spec) being bombarded with requests from a 
stationary machine and a laptop (Both of a good spec). By finetuning the 
parameters passed to the emulator (IO threads, Kernel Poll, etc), I managed 
to get a throughput increase of about 30%.

At this point, the CPU usage was about 70% when the errors started occuring, 
and slowing down the connection rate resulted in a higher number of 
simultaneously users.  The slave node on another machine helped bring up the 
load, but still hitting a limit before the machine hit 100% CPU usage. It 
looks like the system resources TCP/IP stack is the bottleneck, as the 
system resources were maxed out.

I am wondering about the following:

* Is there an easy way to see how much of the network overhead is caused by 
the distributed Mnesia and how much is caused by the test clients?

* Is there a preferred OS on which I can run clustered Erlang Nodes under 
heavy TCP/IP traffic, with thousands of socket connections open? If so, what 
parameters should be finetuned? Free BSD with a kernel poll flag has been 
suggested, but the person had no first hand experience.

I emailed the ejabberd mailing list, but got no helpful response. As this is 
not an IM specific domain, hopefully someone on the list can give me some 

Anders Trondheim

Express yourself instantly with MSN Messenger! Download today it's FREE! 

More information about the erlang-questions mailing list