Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.
Erlang Perl Python Other

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


# $Id$



  Table of Contents

  1. Introduction

     1.1 General
     1.2 What This Package Is

  2. Getting Things Installed

     2.1 Dependencies
     2.2 Compilation and Installation
     2.3 Problems/Bugs
     2.4 Platform Issues


  1.  Introduction

  1.1.  General

  This document gives pointers for information on this package which is
  distributed under the GNU General Public License version 2 (see file

  1.2.  What This Package Is

  The purpose of this package is to simulate users in order to test
  the scalability and performances of IP based client/server
  applications. Currently, only the Jabber protocol has been
  implemented and tested, but it can be easily extended (see
  doc/Design.txt). IDX-TSUNAMI use the Erlang language.

  This tool can simulate thousands of users concurrently, and can be
  distributed on several client machines. Up to 10000 users can be
  simulated on a single machine (the limit depends on the hardware and
  also on the activity of the simulated clients).

  The idea is to simulate the behavior of a real world client using a
  stochastic model, in order to achieve a more realistic traffic than
  other simple models (deterministics).

  In this context, a client is characterize by:
      - the mean time elapsed between each request ("think time")
      - the number of requests during a session
      - the type and parameters of requests (including, for example,
        'chat' message size for Jabber)

  Another key parameter is the arrival rate of clients.

  In the current implementation, the client arrival rate and the user
  "think time" are represented by an exponential distribution
  (therefore, the arrival process is a Poisson process)

  The traffic can be logged to a file and, after completion of
  all the clients, these files can be analyzed by scripts to get
  useful measurements of responses time. A small script is furnished
  for the Jabber protocol (mean, median, standard variation, and so on
  are computed, for different types of messages: authentication,
  chat, offline messages ...) and generic statistics. 

  Since v0.2.0, stats can also be computed in real-time, and dumped in
  a text file at regular interval.

  This software is currently under development and can be enhanced
  in many ways (see TODO file). 

  2.  Getting Things Installed

  2.1.  Dependencies
  - tested with Erlang/OTP R9C-0

  - perl5 (if you want to use the scripts)
  - gnuplot (optional; for graphical output with script)

  2.2.  Compilation and Installation

  Edit Makefile if you want to change the install path (prefix)
  (/usr/local/idx-tsunami by default)

  Edit src/tsunami.rel.src and src/tsunami_controller.rel.src if your
  Erlang version is not R9C-0 and set erts, kernel, ssl and stdlib
  version according to your Erlang distribution.

  make install

  How to use it:
    1a/ Edit etc/idx-tsunamirc file (read the comments for explanation on
        the parameters, there is a sample file etc/idx-tsunamirc.default) 

    1b/ Read the doc/Jabber.txt file for Jabber-specific information.

    1c/ For HTTP, session's descriptions are read from a file, using the
        same format as httperf. See doc/http_sesslog.txt for an example.

    1d/ add machines to be used in  ~/.hosts.erlang 

    2/ use the script " --start" to launch the simulated clients.

     2a/ use " --config" to create only the
         configuration files (based on idx-tsunamirc); this can be
         useful if you want to start erlang by hand.

    3/ When it's finished, you can use to get
       statistical results from the logfiles (require at least 'light'
       monitoring for Jabber, see comments in 'idx-tsunamirc' ). 

	   Since v0.2.0, you can have 'realtime' stats using with the
	   --stats and --plot option (no monitoring needed). It will
	   generate graphics in postscript using gnuplot. For HTTP, you
	   MUST use --stats. This option requires a logfile, by default it
	   is named 'idx-tsunami.log0'
       Every 10sec (default value), stats are dump in the log file,
       and the script can create graphics about the current activity.
	   Availables stats:
		- response_time (response time for each subrequest (~ request for HTTP))
		- page_resptime (response time for each 'action' (~ page for HTTP))
		- connect (duration of the connection)
		- reconnect (number of reconnection)
		- size (size of responses)
		- session (duration of a user's session)
		- users (number of simultaneous users)

       HTTP specific stats:
		  - counter for each response status (200, 404, etc.)
  2.3.  Problems/Bugs
  Submit bug reports/ask questions to the authors (see CONTRIBUTORS)
  2.4.  Platform Issues

  This package has only be tested on Linux. It should work
  on Erlang supported platforms (Solaris, *BSD)

Something went wrong with that request. Please try again.