Linux system parameters for maximizing no. of ejabberd connections

We have an ejabberd installation on Red Hat Fedora Core 2 supporting a consumer Windows application that needs to be connected to the ejabberd server all the time, but has very little traffic on it occasionally.

After a popular radio show host mentioned our application yesterday, registrations have gone through the roof - we're doing over 100 registrations/hour and we're in a hurry to make sure that the ejabberd installation can handle all the new users signing in.

In particular, we're worried about whether we're going to run into issues with the TCP/IP socket connections being set to 1024. We've also made sure that ulimit is set correctly.

I've read that one ejabberd installation can support several thousand users. What other parameters on the system can we tweak to make sure we maximize the number of users who can sign on to our service?

Thanks much for your quick help!

Increment some limits, and use Kernel Poll

Total registered users has only a little impact on RAM usage. Concurrent users is the thing that should matter you, it affects RAM usage and of course CPU usage.

As described in the benchmarks page, to get thousands of concurrent users I had to increment those limits: Erlang ports limit, ETS maximum tables, maximum processes.

There is a basic explanation of those parameters on the Performance Tuning page.

Additionally, if you get a bottleneck on CPU, or want to reduce drastically the CPU usage, use Kernel Poll. If you are using Linux 2.6, you will need to apply a patch to Erlang. If you already compiled Erlang and ejabberd from source, you just need to apply the patch and recompile. It's not that hard, and the benefit is impressive.

Thanks

Thanks, that was really helpful.

Syndicate content