ejabberd is memory bound as session data is kept in RAM for each connected user. This means that available memory is the factor that limits the number of users an ejabberd node can handle. So memory usage was one of the main concern on the ejabberd 3 roadmap.
We’re finally pleased to show some good results on this side.
This shows ejabberd memory usage while running a Tsung benchmark scenario, which simulated users chatting and changing presence using real anonymized rosters, on ejabberd 2.1.11 and 3.0.0. The 2.1.11 crashed early during the test by lack of memory with 45000 connected users while 3.0 was using half the memory at the same time and was able to complete the whole test, handling 60000 users with limited memory usage.