Tutorial: Load testing XMPP servers with Plain Old Erlang

Paweł Pikuła
Developer at Erlang Solutions Kraków

There are two ways to scale MongooseIM, one is to scale the server vertically, adding more RAM and CPU. When there are no more resources to grow vertically, it is possible to scale the server horizontally by adding new nodes to the cluster. In both cases we need to somehow measure and monitor the capacity of our setup. This tutorial aims to show how to load test an XMPP server using Amoc. Amoc is an open source tool developed by Erlang Solutions which leverages the power of Erlang to parallelize XMPP test scenarios. This tutorial uses the MongooseIM server, but Amoc can be run against other XMPP servers like ejabberd or Openfire.

Tutorial objectives:

This tutorial will teach how to: * set up a MongooseIM cluster * tune linux OSes for high load * monitor servers and load generators * write and instrument XMPP test scenarios in plain erlang * increase/decrease load to find a sweet spot in which system is stable * automate the setup and deployment process

Target audience:

Developers/DevOps people wanting to load test their XMPP services. People evaluating XMPP solutions in terms of capacity and scalability.


Paweł first encountered Erlang during his studies at AGH University of Science and Technology in Kraków. He has been working at Erlang Solutions Kraków for almost 2 years, focusing mostly on the development and consultancy on MongooseIM - a fork of the ejabberd XMPP server.


GitHub: ppikula

Twitter: @pawelpikula

Back to conference page