Tsung is an open-source multi-protocol distributed load testing tool
Tsung is a multi-protocol distributed load testing tool that is available as an open source project.
It may be used to put HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT, and Jabber/XMPP servers through their paces. Tsung is free software distributed under the GNU General Public License version 2.
Tsung’s objective is to simulate users in order to evaluate the scalability and performance of client/server IP-based applications. It is useful for performing load and stress tests on your servers. Numerous protocols have been built and validated, and the system is easily extensible.
It can be deployed over multiple client machines and is capable of simulating hundreds of thousands (or perhaps millions) of virtual users concurrently (or much more if sufficient hardware is available…).
Tsung is written in Erlang, a free and open-source programming language developed by Ericsson for developing fault-tolerant distributed applications.
Features of Tsung
- High performance: the load can be spread among a cluster of client machines.
- Multiple protocols are presently supported via a plugin system: HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, XMPP/Jabber, BOSH, MQTT, and AMQP.
- TCP, UDP, Websocket, TSL/SSL (with or without client certificate) are all supported protocols, as are IPv4 and IPv6.
- Multiple IP addresses can be utilized on a single machine by leveraging the underlying operating system’s IP address.
- Aliasing OS monitoring (CPU, memory, and network traffic) on remote servers via SNMP, Munin, or Erlang agents.
- Configuration system based on XML; many sessions can be utilized to mimic various types of users. In XML, dynamic sessions can be readily expressed (this can be used to retrieve at runtime an ID from the server output and use it later in the session).
- To simulate genuine traffic, user thought times and arrival rates can be randomly generated using a probability distribution.
- A built-in web dashboard allows for real-time monitoring of test statistics during the course of a test (response times measurement, server CPU, etc.)
- Interface via the command line