[ejabberd] good idea to use ejabberd?

Badlop badlop at safe-mail.net
Thu Feb 3 19:12:53 MSK 2005


Ilja Booij escribió:
> * 10.000 simultaneous clients.
> * these clients will all be in muc rooms of 25-30 clients each.
> * each client will send a message about once a second. So this will
> result in 25000 to 30000 messages a second.
> * messages will be small, about 50 bytes each, including XMPP stuff.
> 
> Is this doable using ejabberd or should we be looking for another
> solution (IRC for instance)?

I don't find any problem, it's just a horsepower thing.
You can make a stress test using jabsimul and check how many concurrent users ejabberd can 
handle on your hardware with the messages per second rate you want.

Once you have the number of concurrent users on one node, if that number is bellow 10.000, 
you can make a cluster with several nodes. They'll share the userbase.

The MUC service can't be clustered, but maybe you can set several different MUC services, 
one on every node, each handling a part of the total MUC rooms:

Node 1: node1.myjabber.net hosted on machine1
Node 2: node2.mujabber.net hosted on machine2

Jabber server: myjabber.net

MUC service 1: muc1.myjabber.net hosted by node1.myjabber.net
MUC service 2: muc2.myjabber.net hosted by node2.myjabber.net

The users on your Jabber server myjabber.net can login to node1 or node2. They can join 
rooms on muc1 or muc2. If you want on the future to add more users, more rooms, the 
messages are larger or more frequent and your cluster is not enought you only need to add 
another node.


More on jabsimul: http://ejabberd.jabber.ru/benchmark

To handle such a high number of connections you'll need kernel poll enabled on Erlang. 
Erlang/OTP R10B-2 currently supports devpoll, kpoll and event, but not the epoll included 
in Linux 2.4/2.6, AFAIK.


Since I've not tested kernel poll, I can't give you real figures on CPU and RAM 
consumption. But I think ejabberd is worth the try. if you can get kernel poll working.


More information about the ejabberd mailing list