Skip to content

Instantly share code, notes, and snippets.

@hassy
Last active January 10, 2016 19:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hassy/9731688 to your computer and use it in GitHub Desktop.
Save hassy/9731688 to your computer and use it in GitHub Desktop.
Quick Prosody load-test

Prosody XMPP Performance Test

Results of a quick performance test for Prosody - a popular open-source XMPP server.

Server

Prosody v0.7 with libevent enabled

Lua 5.1

Hardware: entry-level Digital Ocean box, 512MB RAM, 20GB SSD drive

ulimit -n:

100000

lscpu:

Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 2
Stepping:              3
CPU MHz:               1999.999
BogoMIPS:              3999.99
Virtualization:        VT-x
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K

uname -a:

Linux hll-prosody 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012 i686 i686 i686 GNU/Linux

Test setup

5000 user accounts registered on the server with prosodyctl For 50 seconds, 100 new connections to the server are created Every user sends 200 messages to another online user chosen at random (message size varies from 64 to 128 characters). There is a pause of ~1 second between every message. Once a user has sent 200 messages, they disconnect.

Results

Memory consumption - Number of connections - CPU usage, sampled every 10 seconds.

4884	2	 0.6
16604	435	 2.6
46684	1427	10.2
81276	2309	21.7
108656	3180	34.3
134256	3658	43.0
153976	3935	49.4
169600	4064	54.4
177704	4064	58.4
179168	4093	61.0
183632	4095	63.7
193928	4099	66.0
202224	4228	67.9
207804	4228	69.6
218624	4228	70.6
222124	4228	71.9
228196	4237	73.2
236084	4241	74.3
237176	4256	75.3
237328	4256	75.8
244476	4256	76.7
250792	4357	77.5
251988	3767	78.2
254888	3379	78.8
264920	2982	79.1
267032	2698	79.7
272840	2213	80.2
280884	1711	80.7
280960	1599	81.1
282228	1474	81.4
280244	1386	81.6
273548	1263	81.9
272104	1263	81.2
272104	1263	80.4
272104	1263	79.6
272104	1263	78.9
272104	1134	78.0
272104	1134	77.1
272104	1134	76.4
272104	1134	75.6
272104	1134	74.9
272104	1134	74.2
272104	1134	73.5
272104	1134	72.9
272104	1001	72.3
272104	1001	71.6
272104	1001	71.0
272104	1001	70.3
272104	1001	69.7
272104	1001	69.0
272104	869	68.5
272104	869	67.8
272104	589	67.1
272104	2	65.8
272104	2	64.6

CPU usage then drops down to 0 and memory consumption stays the same.

(Load generated with Heavy Artillery)

@bangarharshit
Copy link

Thanks for the detail. Never realized that Prosody is so good with system resources. Any idea - how many errors?

@Zash
Copy link

Zash commented Jan 10, 2016

Prosody 0.7.0 was released over 5 years ago. There have been two major version bumps and quite the number of minor releases since then. Why run benchmarks on this version?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment