Tsung is an open-source multi-protocol distributed load
It can be used to stress HTTP, WebDAV, SOAP,
PostgreSQL, MySQL, LDAP and
Jabber/XMPP servers. Tsung is a free
software released under the GPLv2 license.
The purpose of Tsung is to simulate users in order to test
the scalability and performance of IP based client/server
applications. You can use it to do load and stress testing of
your servers. Many protocols have been
implemented and tested, and it can be easily extended.
It can be distributed on several client machines and
is able to simulate hundreds of thousands of virtual users concurrently (or
even millions if you have enough hardware ...).
Tsung is developed in Erlang, an open-source
language made by Ericsson for building robust fault-tolerant
- Jul 20 2015 Tsung
1.6.0 is available. Web dashboard added.
- Apr 9 2014 Tsung
1.5.1 is available. MQTT support added.
- May 24 2013 Tsung
1.5.0 is available. Websocket, BOSH and AMQP
(experimental) support added.
- Jan 4 2012 Tsung
1.4.2 is available
- Nov 21 2011 Tsung is now in
- Sep 13
1.4.1 is available ! This is a bugfix only release.
- Sep 5
1.4.0 is available !
- Apr 6
2011 Github mirror available. Should be synchronized with the master branch on gitorious
- Aug 17
1.3.3 is available ! Only bugfixes in this release
- Jun 20
1.3.2 is available ! Many
- Feb 2 2010 Migration to Git
- Sep 10
1.3.1 is available ! Many
enhancements: Release notes
- Sep 16
1.3.0 is available ! WebDAV, LDAP and MySQL support added, many
bugfixes and other enhancements
- Mar 25 2007 A tutorial: Writing a Tsung plugin has been contributed by tty
High Performance: the load can be distributed on a
cluster of client machines
Multi-protocols using a plugin system: HTTP, WebDAV, SOAP,
PostgreSQL, MySQL, LDAP , XMPP/Jabber, BOSH, MQTT and AMQP
are currently supported. SSL is also supported.
Several IP addresses can be used on a single machine
using the underlying OS IP Aliasing
OS monitoring (CPU, memory and network traffic) using
SNMP, Munin or Erlang agents on remote servers.
- XML configuration system; several sessions can be used to
simulate different type of users. Dynamic sessions can be
easily described in XML (this can be used to retrieve at
runtime an ID from the server output and use it later in the
- In order to generate a realistic traffic, user think-times
and the arrival rate can be randomize using a probability
- HTML reports can be
generated during the load to view response times measurement,
server CPU, etc.
- HTTP/1.0 and HTTP/1.1 support
- GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH methods
- Cookies are automatically handled
- 'GET If-modified since' type of request
- WWW-authentication Basic and Digest
- Proxy mode to record sessions using a Web browser.
- Basic support for SOAP using the HTTP mode (the SOAPAction HTTP header is handle).
- WebDAV extensions
- Authentication, presence and register messages
- Chat messages to online or offline users
- Roster set and get requests
- Global users' synchronization can be set on specific
- PubSub, MUC, Virtual Hosts
- BOSH & XMPP over Websocket
- Authentication (password or MD5)
- Basic and extended Queries
- Proxy mode to record sessions
This plugin works only with MySQL version 4.1 and higher.
- Secured authentication method only (MySQL >= 4.1)
- Basic Queries
- Add, search, modify queries
- starttls (only with R12B-0 Erlang and up)
- basic publish and consume
- publisher confirm and consumer ack
It supports MQTT V3.1
- Connect to mqtt broker with options
- Publish mqtt messages to the broker
- Subscribe/unsubscribe topics
- Support QoS 0 and QoS 1s MQTT V3.1.