ejabberd 2.1 vs 3.0 PubSub processor usage

ejabberd’s PubSub implementation covers most of XEP-0060 specification. This involve some complexity server side, sometimes at cost of performances. So PubSub’s optimizations 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 processor usage while running a Tsung benchmark scenario, which simulated PubSub items published every minute and users subscribing to PubSub nodes on ejabberd 2.1.11 and 3.0.0. The 2.1.11 stopped early during the test by not responding and consumming 100%CPU on a thread with 50000 subscribers, while 3.0 was using 1/4 of processor ressources at the same time and was able to complete the whole test, handling 60000 subscribers with no more than 14% CPU on a dual core system.

Let us know what you think 💬

8 thoughts on “ejabberd 2.1 vs 3.0 PubSub processor usage

    • This is a quite different code base and we need to extract an open source version from the commercial one. It will require some architecture changes to make us able to keep private the modules we want to keep private. That’s quite some work, so no date yet.

      • Great! Is this improved PubSub module one of the ones you intend to keep private? Also, will there be mnesia table migration scripts/tools for 2.1 users?

  1. Amazing! Then, up to how many subscribers to a pubsub node be feasible now? Say, if there are 10 ejabberd nodes clustered, each with 100k clients connected, then can all those 1M clients subscribe to one pubsub node and exchange messages? Guess it would be a tough test.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.