[erlang-questions] Unicorn-style load balancing in Erlang?

Xiao Jia <>
Wed Jan 2 17:09:43 CET 2013


>From http://www.erlang.org/doc/man/gen_tcp.html#accept-1:

> It is worth noting that the accept call does not have to be issued
> from the socket owner process. Using version 5.5.3 and higher of
> the emulator, multiple simultaneous accept calls can be issued
> from different processes, which allows for a pool of acceptor
> processes handling incoming connections.

Does it mean that we can have Unicorn-style load balancing in Erlang?
If so, are there any existing servers or libraries making use of this
feature?

For those who are not familiar with Unicorn [1], it is a traditional
UNIX prefork web server. Load balancing between worker processes is
done by the OS kernel. All workers share a common set of listener
sockets and does non-blocking accept() on them. The kernel will decide
which worker process to give a socket to and workers will sleep if
there is nothing to accept().

btw, I also posted this question on StackOverflow [2] but no active
responses there :-(

[1]: http://unicorn.bogomips.org/
[2]: http://stackoverflow.com/questions/14121987/unicorn-style-load-balancing-in-erlang

---
Regards,
Xiao Jia



More information about the erlang-questions mailing list