Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

update

SVN Revision: 565
  • Loading branch information...
commit d5beba1c75fbc88f31369f644d6e34582b6757e8 1 parent bc55eac
Nicolas Niclausse nniclausse authored
Showing with 409 additions and 309 deletions.
  1. +409 −309 doc/user_manual.html
718 doc/user_manual.html
View
@@ -1,39 +1,55 @@
-
-
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
-
-<HEAD>
-
-<TITLE>IDX-Tsunami User's manual</TITLE>
-
-<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
-<META name="GENERATOR" content="hevea 1.08">
-<STYLE type="text/css">
-.toc{list-style:none;}
-.title{margin:auto;text-align:center}
-.center{text-align:center;margin-left:auto;margin-right:auto;}
-.flushleft{text-align:left;margin-left:0ex;margin-right:auto;}
-.flushright{text-align:right;margin-left:auto;margin-right:0ex;}
-DIV TABLE{margin-left:inherit;margin-right:inherit;}
-PRE{text-align:left;margin-left:0ex;margin-right:auto;}
-BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
-.part{margin:auto;text-align:center}
-</STYLE>
-
-<link rel="stylesheet" href="IDXDOC.css">
+<HEAD><TITLE>IDX-Tsunami User's manual</TITLE>
+
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<META name="GENERATOR" content="hevea 1.07">
+
+<style type="text/css">
+<!--
+body {font-size: 90%; margin-right:40px; margin-left:40px; font-family:Sans-Serif; color:#000000; background-color:#ffffff;}
+p, .n {font-size: 90%; font-family:Sans-Serif; color:#000000; background-color:#ffffff;}
+h1 {font-size: 200%; color:#800000; background-color:#ffffff;}
+h2 {font-size:150%; color:#000080; background-color:#ffffff;}
+h3 {font-family:Sans-Serif; font-size: 120%; font-weight:bold; color:#000080; background-color:#ffffff;}
+h4 {font-family:Sans-Serif; font-size:100%; font-weight:bold; color:#000080; background-color:#ffffff;}
+h5 {font-family:Sans-Serif; font-size:100%; font-weight:bold; color:#000000; background-color:#ffffff; margin-bottom: 0;}
+form {margin-bottom:-5px;}
+textarea {color:#333333; background-color:#ffffff; width:90%;}
+table {font-size:90%;}
+dl,ul,ol {margin-top: 2pt; margin-bottom: 2pt;}
+tt, pre {font-family:monospace; color:#666666; background-color:#ffffff;}
+pre {
+ background-color: #ffffee;
+ white-space:pre;
+ border-style:solid;
+ border-width:thin;
+ border-color:#999999;
+ color:#333333;
+ padding:3px;
+ width:100%;
+}
+
+a:link {color:#800000; background-color: #ffffff;}
+a:visited {color:#006600; background-color: #ffffff;}
+a:active {color:green; background-color: #ffffff;}
+a:hover {background:#ffffaa;}
+
+.piedpage, .entete {
+ font-family:Sans-Serif; font-size:90%; font-style:italic; color:#0000ff; background-color: #ffffff;
+ text-align: center;
+}
+-->
+</style>
</HEAD>
-
<BODY >
-<!--HEVEA command line is: /usr/bin/hevea -fix -I /home/nniclausse/cvs/projetdoc/common//styles -exec xxdate.exe -pedantic IDXDOC-DOTORG.hva user_manual.tex -->
+<!--HEVEA command line is: hevea -fix -I /user/nniclaus/home/cvs/projetdoc/common//styles -exec xxdate.exe -pedantic IDXDOC-DOTORG.hva user_manual.tex -->
<!--HTMLHEAD-->
<DIV class="entete">
- Copyright 2004 &copy; IDEALX S.A.S. -
- &nbsp;<A href="http://tsunami.idealx.org/">http://tsunami.idealx.org/</A>
+ Copyright 2005 &copy; Nicolas Niclausse
</DIV>
<HR>
<!--ENDHTML-->
@@ -42,103 +58,109 @@
+
+
<H1 ALIGN=center>IDX-Tsunami User's manual</H1>
-<DIV CLASS="center">
+<DIV ALIGN=center>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1>
-<TR><TD ALIGN=left NOWRAP bgcolor="#F2F2F2">Version:</TD>
-<TD ALIGN=left NOWRAP>540</TD>
+<TR><TD ALIGN=left NOWRAP bgcolor="#f2f2f2">Version:</TD>
+<TD ALIGN=left NOWRAP>549</TD>
</TR>
-<TR><TD ALIGN=left NOWRAP bgcolor="#F2F2F2">Date :</TD>
-<TD ALIGN=left NOWRAP> 9th October,&nbsp;2005</TD>
+<TR><TD ALIGN=left NOWRAP bgcolor="#f2f2f2">Date :</TD>
+<TD ALIGN=left NOWRAP>October 14, 2005</TD>
</TR></TABLE>
</DIV>
<BR>
-<DIV CLASS="center">
+<DIV ALIGN=center>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1>
<TR><TD VALIGN=top ALIGN=left><I>IDX-Tsunami user's manual</I></TD>
</TR></TABLE>
</DIV>
-<!--TOC section Contents-->
+<!--TOC section Table of Contents-->
-<H2 CLASS="section">Contents</H2><!--SEC END -->
+<H2>Table of Contents</H2><!--SEC END -->
-<UL CLASS="toc"><LI CLASS="li-toc">
+<UL><LI>
<A HREF="#htoc1">1&nbsp;&nbsp;Introduction</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
+<UL><LI>
<A HREF="#htoc2">1.1&nbsp;&nbsp;What is IDX-Tsunami ?</A>
-<LI CLASS="li-toc"><A HREF="#htoc3">1.2&nbsp;&nbsp;What is Erlang and why is it important for IDX-Tsunami ?</A>
-<LI CLASS="li-toc"><A HREF="#htoc4">1.3&nbsp;&nbsp;IDX-Tsunami background</A>
+<LI><A HREF="#htoc3">1.2&nbsp;&nbsp;What is Erlang and why is it important for IDX-Tsunami ?</A>
+<LI><A HREF="#htoc4">1.3&nbsp;&nbsp;IDX-Tsunami background</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc5">2&nbsp;&nbsp;Features</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
+<LI><A HREF="#htoc5">2&nbsp;&nbsp;Features</A>
+<UL><LI>
<A HREF="#htoc6">2.1&nbsp;&nbsp;IDX-Tsunami main features</A>
-<LI CLASS="li-toc"><A HREF="#htoc7">2.2&nbsp;&nbsp;HTTP related features</A>
-<LI CLASS="li-toc"><A HREF="#htoc8">2.3&nbsp;&nbsp;Jabber related features</A>
-<LI CLASS="li-toc"><A HREF="#htoc9">2.4&nbsp;&nbsp;Complete reports set</A>
-<LI CLASS="li-toc"><A HREF="#htoc10">2.5&nbsp;&nbsp;Highlights</A>
+<LI><A HREF="#htoc7">2.2&nbsp;&nbsp;HTTP related features</A>
+<LI><A HREF="#htoc8">2.3&nbsp;&nbsp;Jabber related features</A>
+<LI><A HREF="#htoc9">2.4&nbsp;&nbsp;Complete reports set</A>
+<LI><A HREF="#htoc10">2.5&nbsp;&nbsp;Highlights</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc11">3&nbsp;&nbsp;Installation</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
+<LI><A HREF="#htoc11">3&nbsp;&nbsp;Installation</A>
+<UL><LI>
<A HREF="#htoc12">3.1&nbsp;&nbsp;Dependencies</A>
-<LI CLASS="li-toc"><A HREF="#htoc13">3.2&nbsp;&nbsp;Compilation</A>
-<LI CLASS="li-toc"><A HREF="#htoc14">3.3&nbsp;&nbsp;Configuration</A>
-<LI CLASS="li-toc"><A HREF="#htoc15">3.4&nbsp;&nbsp;Feedback</A>
+<LI><A HREF="#htoc13">3.2&nbsp;&nbsp;Compilation</A>
+<LI><A HREF="#htoc14">3.3&nbsp;&nbsp;Configuration</A>
+<LI><A HREF="#htoc15">3.4&nbsp;&nbsp;Feedback</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc16">4&nbsp;&nbsp;HTTP benchmark approach</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc17">4.1&nbsp;&nbsp;benchmarking a HTTP proxy server</A>
+<LI><A HREF="#htoc16">4&nbsp;&nbsp;HTTP benchmark approach</A>
+<UL><LI>
+<A HREF="#htoc17">4.1&nbsp;&nbsp;benchmarking a Web server</A>
+<LI><A HREF="#htoc18">4.2&nbsp;&nbsp;benchmarking a proxy server</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc18">5&nbsp;&nbsp;Jabber benchmark approach</A>
-<LI CLASS="li-toc"><A HREF="#htoc19">6&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc20">6.1&nbsp;&nbsp;File structure</A>
-<LI CLASS="li-toc"><A HREF="#htoc21">6.2&nbsp;&nbsp;Clients and server</A>
-<LI CLASS="li-toc"><A HREF="#htoc22">6.3&nbsp;&nbsp;Monitoring</A>
-<LI CLASS="li-toc"><A HREF="#htoc23">6.4&nbsp;&nbsp;Defining the load progression</A>
-<LI CLASS="li-toc"><A HREF="#htoc24">6.5&nbsp;&nbsp;Default values</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc25">6.5.1&nbsp;&nbsp;Default values: Jabber</A>
-<LI CLASS="li-toc"><A HREF="#htoc26">6.5.2&nbsp;&nbsp;Default values: HTTP</A>
+<LI><A HREF="#htoc19">5&nbsp;&nbsp;Jabber benchmark approach</A>
+<LI><A HREF="#htoc20">6&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</A>
+<UL><LI>
+<A HREF="#htoc21">6.1&nbsp;&nbsp;File structure</A>
+<LI><A HREF="#htoc22">6.2&nbsp;&nbsp;Clients and server</A>
+<LI><A HREF="#htoc23">6.3&nbsp;&nbsp;Monitoring</A>
+<LI><A HREF="#htoc24">6.4&nbsp;&nbsp;Defining the load progression</A>
+<LI><A HREF="#htoc25">6.5&nbsp;&nbsp;Setting Default values</A>
+<UL><LI>
+<A HREF="#htoc26">6.5.1&nbsp;&nbsp;Default values: Jabber</A>
+<LI><A HREF="#htoc27">6.5.2&nbsp;&nbsp;Default values: HTTP</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc27">6.6&nbsp;&nbsp;Sessions</A>
-<LI CLASS="li-toc"><A HREF="#htoc28">6.7&nbsp;&nbsp;Dynamic substitutions</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc29">6.7.1&nbsp;&nbsp;Reading external file</A>
+<LI><A HREF="#htoc28">6.6&nbsp;&nbsp;Sessions</A>
+<UL><LI>
+<A HREF="#htoc29">6.6.1&nbsp;&nbsp;Overview and examples</A>
+<LI><A HREF="#htoc30">6.6.2&nbsp;&nbsp;Dynamic substitutions</A>
+<LI><A HREF="#htoc31">6.6.3&nbsp;&nbsp;Reading external file</A>
+<LI><A HREF="#htoc32">6.6.4&nbsp;&nbsp;Dynamic variables</A>
+<LI><A HREF="#htoc33">6.6.5&nbsp;&nbsp;Checking the server's response</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc30">6.8&nbsp;&nbsp;Dynamic variables</A>
-<LI CLASS="li-toc"><A HREF="#htoc31">6.9&nbsp;&nbsp;Checking the server's response</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc32">7&nbsp;&nbsp;Statistics and reports</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc33">7.1&nbsp;&nbsp;Generating the report</A>
-<LI CLASS="li-toc"><A HREF="#htoc34">7.2&nbsp;&nbsp;Tsunami summary</A>
-<LI CLASS="li-toc"><A HREF="#htoc35">7.3&nbsp;&nbsp;Graphical overview</A>
+<LI><A HREF="#htoc34">7&nbsp;&nbsp;Statistics and reports</A>
+<UL><LI>
+<A HREF="#htoc35">7.1&nbsp;&nbsp;Available stats</A>
+<LI><A HREF="#htoc36">7.2&nbsp;&nbsp;Design</A>
+<LI><A HREF="#htoc37">7.3&nbsp;&nbsp;Generating the report</A>
+<LI><A HREF="#htoc38">7.4&nbsp;&nbsp;Tsunami summary</A>
+<LI><A HREF="#htoc39">7.5&nbsp;&nbsp;Graphical overview</A>
</UL>
-<LI CLASS="li-toc"><A HREF="#htoc36">8&nbsp;&nbsp;References</A>
-<LI CLASS="li-toc"><A HREF="#htoc37">9&nbsp;&nbsp;Acknowledgments</A>
-<LI CLASS="li-toc"><A HREF="#htoc38">A&nbsp;&nbsp;Frequently Asked Questions</A>
-<UL CLASS="toc"><LI CLASS="li-toc">
-<A HREF="#htoc39">A.1&nbsp;&nbsp;IDX-tsunami crash when I start it </A>
-<LI CLASS="li-toc"><A HREF="#htoc40">A.2&nbsp;&nbsp;IDX-tsunami still doesn't start ...</A>
-<LI CLASS="li-toc"><A HREF="#htoc41">A.3&nbsp;&nbsp;IDX-tsunami still crash/fails when I start it !</A>
-<LI CLASS="li-toc"><A HREF="#htoc42">A.4&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</A>
-<LI CLASS="li-toc"><A HREF="#htoc43">A.5&nbsp;&nbsp;How can i specify the number of concurrent users ?</A>
-<LI CLASS="li-toc"><A HREF="#htoc44">A.6&nbsp;&nbsp;SNMP monitoring doesn't work ?!</A>
+<LI><A HREF="#htoc40">8&nbsp;&nbsp;References</A>
+<LI><A HREF="#htoc41">9&nbsp;&nbsp;Acknowledgments</A>
+<LI><A HREF="#htoc42">A&nbsp;&nbsp;Frequently Asked Questions</A>
+<UL><LI>
+<A HREF="#htoc43">A.1&nbsp;&nbsp;IDX-tsunami crashes when I start it </A>
+<LI><A HREF="#htoc44">A.2&nbsp;&nbsp;IDX-tsunami still doesn't start ...</A>
+<LI><A HREF="#htoc45">A.3&nbsp;&nbsp;IDX-tsunami still crashes/fails when I start it !</A>
+<LI><A HREF="#htoc46">A.4&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</A>
+<LI><A HREF="#htoc47">A.5&nbsp;&nbsp;How can I specify the number of concurrent users ?</A>
+<LI><A HREF="#htoc48">A.6&nbsp;&nbsp;SNMP monitoring doesn't work ?!</A>
</UL>
</UL>
<!--TOC section Introduction-->
-<H2 CLASS="section"><A NAME="htoc1">1</A>&nbsp;&nbsp;Introduction</H2><!--SEC END -->
+<H2><A NAME="htoc1">1</A>&nbsp;&nbsp;Introduction</H2><!--SEC END -->
<!--TOC subsection What is IDX-Tsunami ?-->
-<H3 CLASS="subsection"><A NAME="htoc2">1.1</A>&nbsp;&nbsp;What is IDX-Tsunami ?</H3><!--SEC END -->
+<H3><A NAME="htoc2">1.1</A>&nbsp;&nbsp;What is IDX-Tsunami ?</H3><!--SEC END -->
<EM>IDX-Tsunami</EM> is a distributed load testing tool. It is
protocol-independent and can currently be used to stress HTTP, SOAP
@@ -148,7 +170,7 @@ <H3 CLASS="subsection"><A NAME="htoc2">1.1</A>&nbsp;&nbsp;What is IDX-Tsunami ?<
<BR>
<!--TOC subsection What is Erlang and why is it important for IDX-Tsunami ?-->
-<H3 CLASS="subsection"><A NAME="htoc3">1.2</A>&nbsp;&nbsp;What is Erlang and why is it important for IDX-Tsunami ?</H3><!--SEC END -->
+<H3><A NAME="htoc3">1.2</A>&nbsp;&nbsp;What is Erlang and why is it important for IDX-Tsunami ?</H3><!--SEC END -->
<EM>IDX-Tsunami's</EM> main strength is its ability to simulate a huge number of
simultaneous user from a single CPU. When used on cluster you can
@@ -161,12 +183,12 @@ <H3 CLASS="subsection"><A NAME="htoc3">1.2</A>&nbsp;&nbsp;What is Erlang and why
Erlang is a <EM>concurrency-oriented</EM> programming language.
Tsunami is based on the Erlang OTP (Open Transaction Platform) and
inherits several characteristics from Erlang:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>Performance</EM>: Erlang has been made to support hundred thousands
of lightweight processes in a single virtual machine.
-<LI CLASS="li-itemize"><EM>Scalability</EM>: Erlang runtime environment is naturally
+<LI><EM>Scalability</EM>: Erlang runtime environment is naturally
distributed, promoting the idea of process's location transparency.
-<LI CLASS="li-itemize"><EM>Fault-tolerance</EM>:Erlang has been built to develop robust,
+<LI><EM>Fault-tolerance</EM>:Erlang has been built to develop robust,
fault-tolerant systems. As such, wrong answer sent from the server
to <EM>IDX-Tsunami</EM> does not make the whole running benchmark crash.
</UL>
@@ -175,12 +197,12 @@ <H3 CLASS="subsection"><A NAME="htoc3">1.2</A>&nbsp;&nbsp;What is Erlang and why
<BR>
<!--TOC subsection IDX-Tsunami background-->
-<H3 CLASS="subsection"><A NAME="htoc4">1.3</A>&nbsp;&nbsp;IDX-Tsunami background</H3><!--SEC END -->
+<H3><A NAME="htoc4">1.3</A>&nbsp;&nbsp;IDX-Tsunami background</H3><!--SEC END -->
History:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>IDX-Tsunami</EM> is being developed since 2001
-<LI CLASS="li-itemize">It is an industrial strenght implementation of a <EM>stochastic model</EM>
+<LI>It is an industrial strength implementation of a <EM>stochastic model</EM>
for real users simulation. User events distribution is based on a
Poisson Process. More information on this topic in:<BR>
<BR>
@@ -188,36 +210,36 @@ <H3 CLASS="subsection"><A NAME="htoc4">1.3</A>&nbsp;&nbsp;IDX-Tsunami background
and Performance Evaluation of Web Servers</B>. <EM>Performance Evaluation,
Volume 46, Issue 2-3, October 2001</EM>.<BR>
<BR>
-<LI CLASS="li-itemize">This model has already been tested in the INRIA <EM>WAGON</EM>
+<LI>This model has already been tested in the INRIA <EM>WAGON</EM>
research prototype (Web trAffic GeneratOr and beNchmark). WAGON was
used in the <A HREF="http://www.vthd.org/"><TT>http://www.vthd.org/</TT></A> project (Very High Broadband
IP/WDM test platform for new generation Internet applications, 2000-2004).</UL>
<EM>IDX-Tsunami</EM> has been used for very high load tests:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>Jabber</EM> protocol: 10 000 simultaneous users.
- <EM>IDX-Tsunami</EM> were running on a 3-computers cluster (CPU
+ <EM>IDX-Tsunami</EM> was running on a 3-computers cluster (CPU
800Mhz)
-<LI CLASS="li-itemize"><EM>HTTP and HTTPS</EM> protocol: 12 000 simultaneous users.
+<LI><EM>HTTP and HTTPS</EM> protocol: 12 000 simultaneous users.
<EM>IDX-Tsunami</EM> were running on a 4-computers cluster. The
tested platform reached 3 000 requests per second.
</UL>
<EM>IDX-Tsunami</EM> has been used at:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>DGI</EM> (Direction Générale des impôts): French finance ministry
-<LI CLASS="li-itemize"><EM>Cap Gemini Ernst &amp; Young</EM>
-<LI CLASS="li-itemize"><EM>IFP</EM> (Institut Français du Pétrole): French Research Organization
+<LI><EM>Cap Gemini Ernst &amp; Young</EM>
+<LI><EM>IFP</EM> (Institut Français du Pétrole): French Research Organization
for Petroleum
-<LI CLASS="li-itemize"><EM>LibertySurf</EM>
+<LI><EM>LibertySurf</EM>
</UL>
<!--TOC section Features-->
-<H2 CLASS="section"><A NAME="htoc5">2</A>&nbsp;&nbsp;Features</H2><!--SEC END -->
+<H2><A NAME="htoc5">2</A>&nbsp;&nbsp;Features</H2><!--SEC END -->
<!--TOC subsection IDX-Tsunami main features-->
-<H3 CLASS="subsection"><A NAME="htoc6">2.1</A>&nbsp;&nbsp;IDX-Tsunami main features</H3><!--SEC END -->
+<H3><A NAME="htoc6">2.1</A>&nbsp;&nbsp;IDX-Tsunami main features</H3><!--SEC END -->
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>High Performance</EM>: <EM>IDX-Tsunami</EM> can simulate a
huge number of simultaneous users per physical computer: It can
simulates thousands of users on a single CPU (Note: a simulated user
@@ -226,73 +248,73 @@ <H3 CLASS="subsection"><A NAME="htoc6">2.1</A>&nbsp;&nbsp;IDX-Tsunami main featu
few hundreds (Hint: if all you want to do is requesting a single URL
in a loop, use <EM>ab</EM>; but if you want to build complex
scenarios with extended reports, <EM>IDX-Tsunami</EM> is for you).
-<LI CLASS="li-itemize"><EM>Distributed</EM>: the load can be distributed on a cluster of
+<LI><EM>Distributed</EM>: the load can be distributed on a cluster of
client machines
-<LI CLASS="li-itemize"><EM>Multi-Protocols</EM> using a plug-in system: HTTP (both standard
+<LI><EM>Multi-Protocols</EM> using a plug-in system: HTTP (both standard
web traffic and SOAP) and Jabber are currently supported. LDAP and
SMTP are on the TODO list.
-<LI CLASS="li-itemize"><EM>SSL</EM> support
-<LI CLASS="li-itemize"><EM>Several IP addresses</EM> can be used on a single machine using
+<LI><EM>SSL</EM> support
+<LI><EM>Several IP addresses</EM> can be used on a single machine using
the underlying OS IP Aliasing
-<LI CLASS="li-itemize"><EM>OS monitoring</EM> (CPU, memory and network traffic) using Erlang
+<LI><EM>OS monitoring</EM> (CPU, memory and network traffic) using Erlang
agents on remote servers or <EM>SNMP</EM>
-<LI CLASS="li-itemize"><EM>XML configuration system</EM>: complex user's scenarios are written
+<LI><EM>XML configuration system</EM>: complex user's scenarios are written
in XML. Scenarios can be written with a simple browser using the
tsunami recorder (for HTTP only).
-<LI CLASS="li-itemize"><EM>Dynamic scenarios</EM>: You can get dynamic data from the
- server under load (without writing any code) and reinject it in
+<LI><EM>Dynamic scenarios</EM>: You can get dynamic data from the
+ server under load (without writing any code) and re-inject it in
subsequent requests.
-<LI CLASS="li-itemize"><EM>Mixed behaviours</EM>: several sessions can be used to simulate
+<LI><EM>Mixed behaviours</EM>: several sessions can be used to simulate
different type of users during the same benchmark. You can define
the proportion of the various behaviours in the benchmark scenario.
-<LI CLASS="li-itemize"><EM>Stochastic processes</EM>: in order to generate a realistic traffic,
+<LI><EM>Stochastic processes</EM>: in order to generate a realistic traffic,
user thinktimes and the arrival rate can be randomize using a probability
distribution (currently exponential)
</UL>
<!--TOC subsection HTTP related features-->
-<H3 CLASS="subsection"><A NAME="htoc7">2.2</A>&nbsp;&nbsp;HTTP related features</H3><!--SEC END -->
+<H3><A NAME="htoc7">2.2</A>&nbsp;&nbsp;HTTP related features</H3><!--SEC END -->
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
HTTP/1.0 and HTTP/1.1 support
-<LI CLASS="li-itemize">GET and POST requests
-<LI CLASS="li-itemize">Cookies: Automatic cookies management
-<LI CLASS="li-itemize"><CODE>'</CODE>GET If-modified since<CODE>'</CODE> type of request
-<LI CLASS="li-itemize">WWW-authentication Basic
-<LI CLASS="li-itemize">Proxy mode to record sessions using a Web browser
-<LI CLASS="li-itemize">SOAP support using the HTTP mode (the SOAPAction HTTP header is
+<LI>GET and POST requests
+<LI>Cookies: Automatic cookies management
+<LI><CODE>'</CODE>GET If-modified since<CODE>'</CODE> type of request
+<LI>WWW-authentication Basic
+<LI>Proxy mode to record sessions using a Web browser
+<LI>SOAP support using the HTTP mode (the SOAPAction HTTP header is
handled).
-<LI CLASS="li-itemize">HTTP server or proxy server load testing.
+<LI>HTTP server or proxy server load testing.
</UL>
<!--TOC subsection Jabber related features-->
-<H3 CLASS="subsection"><A NAME="htoc8">2.3</A>&nbsp;&nbsp;Jabber related features</H3><!--SEC END -->
+<H3><A NAME="htoc8">2.3</A>&nbsp;&nbsp;Jabber related features</H3><!--SEC END -->
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
Authentication, presence and register messages
-<LI CLASS="li-itemize">Chat messages to online or offline users
-<LI CLASS="li-itemize">Roster set and get requests
-<LI CLASS="li-itemize">Global users<CODE>'</CODE> synchronization can be set on specific actions
-<LI CLASS="li-itemize">raw XML messages
+<LI>Chat messages to online or offline users
+<LI>Roster set and get requests
+<LI>Global users<CODE>'</CODE> synchronization can be set on specific actions
+<LI>raw XML messages
</UL>
<!--TOC subsection Complete reports set-->
-<H3 CLASS="subsection"><A NAME="htoc9">2.4</A>&nbsp;&nbsp;Complete reports set</H3><!--SEC END -->
+<H3><A NAME="htoc9">2.4</A>&nbsp;&nbsp;Complete reports set</H3><!--SEC END -->
Measures and statistics produced by Tsunami are extremely feature-full.
They are all represented as a graphic. <EM>IDX-Tsunami</EM> produces
statistics regarding:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>Performance</EM>: response time, connection time, decomposition
of the user scenario based on request grouping instruction (called <I>transactions</I>), requests
per second
-<LI CLASS="li-itemize"><EM>Errors</EM>: Statistics on page return code to trace errors
-<LI CLASS="li-itemize"><EM>Target server behaviour</EM>: An Erlang agent can gather information
-from the target server(s). Tsunami produce graphs for CPU and memory
+<LI><EM>Errors</EM>: Statistics on page return code to trace errors
+<LI><EM>Target server behaviour</EM>: An Erlang agent can gather information
+from the target server(s). Tsunami produces graphs for CPU and memory
consumption and network traffic. SNMP is also supported.
</UL>
-Note that <EM>IDX-Tsunami</EM> take care of the synchronization process
+Note that <EM>IDX-Tsunami</EM> takes care of the synchronization process
by itself. Gathered statistics are «synchronized».<BR>
<BR>
It is possible to generate graphs during the benchmark as statistics
@@ -300,18 +322,18 @@ <H3 CLASS="subsection"><A NAME="htoc9">2.4</A>&nbsp;&nbsp;Complete reports set</
<BR>
<!--TOC subsection Highlights-->
-<H3 CLASS="subsection"><A NAME="htoc10">2.5</A>&nbsp;&nbsp;Highlights</H3><!--SEC END -->
+<H3><A NAME="htoc10">2.5</A>&nbsp;&nbsp;Highlights</H3><!--SEC END -->
<EM>IDX-Tsunami</EM> has several advantages over other injection tools:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>High performance</EM> and <EM>distributed benchmark</EM>: You
can use IDX-Tsunami to simulate tens of thousands of virtual users.
-<LI CLASS="li-itemize"><EM>Ease of use</EM>: The hard work is already done for all supported
+<LI><EM>Ease of use</EM>: The hard work is already done for all supported
protocol. No need to write complex scripts. Dynamic scenarios only
requires small trivial piece of code.
-<LI CLASS="li-itemize"><EM>Multi-protocol support</EM>: <EM>IDX-Tsunami</EM> is for example one of
+<LI><EM>Multi-protocol support</EM>: <EM>IDX-Tsunami</EM> is for example one of
the only tool to benchmark SOAP applications
-<LI CLASS="li-itemize"><EM>Monitoring</EM> of the target server(s) to analyze the behaviour
+<LI><EM>Monitoring</EM> of the target server(s) to analyze the behaviour
and find bottlenecks. For example, it has been used to analyze cluster
symmetry (is the load properly balanced ?) and to determine the best
combination of machines on the three cluster tiers (Web engine, EJB
@@ -319,39 +341,40 @@ <H3 CLASS="subsection"><A NAME="htoc10">2.5</A>&nbsp;&nbsp;Highlights</H3><!--SE
</UL>
<!--TOC section Installation-->
-<H2 CLASS="section"><A NAME="htoc11">3</A>&nbsp;&nbsp;Installation</H2><!--SEC END -->
+<H2><A NAME="htoc11">3</A>&nbsp;&nbsp;Installation</H2><!--SEC END -->
-This package has only be tested on Linux. It should work on Erlang
-supported platforms (Solaris, *BSD, Win32 and MacOS-X).<BR>
+This package has been tested on Linux, FreeBSD and Solaris. It should
+work on Erlang supported platforms (Linux, Solaris, *BSD, Win32 and
+MacOS-X).<BR>
<BR>
<!--TOC subsection Dependencies-->
-<H3 CLASS="subsection"><A NAME="htoc12">3.1</A>&nbsp;&nbsp;Dependencies</H3><!--SEC END -->
+<H3><A NAME="htoc12">3.1</A>&nbsp;&nbsp;Dependencies</H3><!--SEC END -->
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
Erlang/OTP R9C-0 and up (included R10B-6)
(<A HREF="http://www.erlang.org/download.html"><TT>http://www.erlang.org/download.html</TT></A>). RedHat users can
download a R9C-2 rpm at
<A HREF="http://www.erlang-projects.org/Public/rpmdeb/rpm_erlang_otp_r9c-2/view"><TT>http://www.erlang-projects.org/Public/rpmdeb/rpm_erlang_otp_r9c-2/view</TT></A>.
-<LI CLASS="li-itemize">xmerl-0.19 (included in erlang R10B) (<A HREF="http://sowap.sourceforge.net/download.html"><TT>http://sowap.sourceforge.net/download.html</TT></A>). Debian and Redhat
+<LI>xmerl-0.19 (included in Erlang R10B) (<A HREF="http://sowap.sourceforge.net/download.html"><TT>http://sowap.sourceforge.net/download.html</TT></A>). Debian and Redhat
binaries are provided at
<A HREF="http://tsunami.idealx.org/dist/"><TT>http://tsunami.idealx.org/dist/</TT></A>
- <LI CLASS="li-itemize">extended regexp module (used for dynamic variables):
+ <LI>extended regexp module (used for dynamic variables):
gregexp.erl available at
<A HREF="http://www.cellicium.com/erlang/contribs/"><TT>http://www.cellicium.com/erlang/contribs/</TT></A> . The module is
included in the source and binary distribution of <EM>IDX-Tsunami</EM>. It
is released under the EPL License.
- <LI CLASS="li-itemize">gnuplot and perl5 (optional; for graphical output with
+ <LI>gnuplot and perl5 (optional; for graphical output with
<TT>analyse_msg.pl</TT> script). The Template Toolkit is used for HTML
reports (see <A HREF="http://template-toolkit.org/"><TT>http://template-toolkit.org/</TT></A>)
- <LI CLASS="li-itemize">for distributed tests, you need an ssh access to remote
+ <LI>for distributed tests, you need an ssh access to remote
machines without password (use a RSA/DSA key without pass-phrase or
ssh-agent) (rsh is also supported)
-<LI CLASS="li-itemize">bash
+<LI>bash
</UL>
<!--TOC subsection Compilation-->
-<H3 CLASS="subsection"><A NAME="htoc13">3.2</A>&nbsp;&nbsp;Compilation</H3><!--SEC END -->
+<H3><A NAME="htoc13">3.2</A>&nbsp;&nbsp;Compilation</H3><!--SEC END -->
<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
@@ -366,7 +389,7 @@ <H3 CLASS="subsection"><A NAME="htoc13">3.2</A>&nbsp;&nbsp;Compilation</H3><!--S
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
./configure
make
make install
@@ -384,7 +407,7 @@ <H3 CLASS="subsection"><A NAME="htoc13">3.2</A>&nbsp;&nbsp;Compilation</H3><!--S
</TR></TABLE></TD>
</TR></TABLE><!--TOC subsection Configuration-->
-<H3 CLASS="subsection"><A NAME="htoc14">3.3</A>&nbsp;&nbsp;Configuration</H3><!--SEC END -->
+<H3><A NAME="htoc14">3.3</A>&nbsp;&nbsp;Configuration</H3><!--SEC END -->
The default configuration file is <TT>~/.idx-tsunami/idx-tsunami.xml</TT> (
there is a sample file
@@ -396,7 +419,7 @@ <H3 CLASS="subsection"><A NAME="htoc14">3.3</A>&nbsp;&nbsp;Configuration</H3><!-
<BR>
<!--TOC subsection Feedback-->
-<H3 CLASS="subsection"><A NAME="htoc15">3.4</A>&nbsp;&nbsp;Feedback</H3><!--SEC END -->
+<H3><A NAME="htoc15">3.4</A>&nbsp;&nbsp;Feedback</H3><!--SEC END -->
Use the idx-tsunami mailing list (see
<A HREF="http://lists.idealx.org/info/idx-tsunami"><TT>http://lists.idealx.org/info/idx-tsunami</TT></A>) if you have
@@ -404,35 +427,39 @@ <H3 CLASS="subsection"><A NAME="htoc15">3.4</A>&nbsp;&nbsp;Feedback</H3><!--SEC
<BR>
<!--TOC section HTTP benchmark approach-->
-<H2 CLASS="section"><A NAME="htoc16">4</A>&nbsp;&nbsp;HTTP benchmark approach</H2><!--SEC END -->
+<H2><A NAME="htoc16">4</A>&nbsp;&nbsp;HTTP benchmark approach</H2><!--SEC END -->
+
+<!--TOC subsection benchmarking a Web server-->
-<OL CLASS="enumerate" type=1><LI CLASS="li-enumerate">
+<H3><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a Web server</H3><!--SEC END -->
+
+<OL type=1><LI>
Record one or more sessions: start the recorder with: <TT>idx-tsunami
recorder</TT>, and then configure your browser to use IDX-Tsunami
proxy recorder (the listen port is 8090). A session file will be
created. For HTTPS recording, use <FONT COLOR=purple>http://{</FONT> instead of
<FONT COLOR=purple>https://</FONT> in your browser.
-<LI CLASS="li-enumerate">Edit / organize scenario, by adding recorded sessions in the
+<LI>Edit / organize scenario, by adding recorded sessions in the
configuration file.
-<LI CLASS="li-enumerate">Write small code for dynamic parts if needed and place dynamic mark-up
+<LI>Write small code for dynamic parts if needed and place dynamic mark-up
in the scenario.
-<LI CLASS="li-enumerate">Test and adjust scenario to have a nice progression of the load. This
+<LI>Test and adjust scenario to have a nice progression of the load. This
is highly dependent of the application and of the size of the target
server(s). Calculate the normal duration of the scenario and use the
interarrival time between users and the duration of the phase to estimate
the number of simultaneous users for each given phase.
-<LI CLASS="li-enumerate">Launch benchmark with your first application parameters set-up:
+<LI>Launch benchmark with your first application parameters set-up:
<TT>idx-tsunami start</TT>
-<LI CLASS="li-enumerate">Wait for the end of the test or stop by hand with
+<LI>Wait for the end of the test or stop by hand with
<TT>idx-tsunami stop</TT> (reports can also be generated during the
test (see § <A HREF="#sec:statistics-reports">7</A>) : the statistics are
updated every 10 seconds). For a brief summary of the current
activity, use <TT>idx-tsunami status</TT>
-<LI CLASS="li-enumerate">Analyse results, change parameters and relaunch another benchmark
+<LI>Analyze results, change parameters and relaunch another benchmark
</OL>
-<!--TOC subsection benchmarking a HTTP proxy server-->
+<!--TOC subsection benchmarking a proxy server-->
-<H3 CLASS="subsection"><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a HTTP proxy server</H3><!--SEC END -->
+<H3><A NAME="htoc18">4.2</A>&nbsp;&nbsp;benchmarking a proxy server</H3><!--SEC END -->
By default, the HTTP plugin is used to benchmark HTTP servers. But you
can also benchmark HTTP Proxy server. To do that, you must add :<BR>
@@ -449,7 +476,7 @@ <H3 CLASS="subsection"><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a HTTP p
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default type="ts_http" name="http_use_server_as_proxy" value="true"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -466,31 +493,31 @@ <H3 CLASS="subsection"><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a HTTP p
</TR></TABLE><BR>
<!--TOC section Jabber benchmark approach-->
-<H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach</H2><!--SEC END -->
+<H2><A NAME="htoc19">5</A>&nbsp;&nbsp;Jabber benchmark approach</H2><!--SEC END -->
-This paragraph explain how to write a session for Jabber.<BR>
+This paragraph explains how to write a session for Jabber.<BR>
<BR>
-There are two difference between HTTP and Jabber testing:
-<OL CLASS="enumerate" type=1><LI CLASS="li-enumerate">
+There are two differences between HTTP and Jabber testing:
+<OL type=1><LI>
There is no recorder for Jabber, so you have to write your
sessions by hand (an example is provided in
- <A HREF="#sec:sessions:jabber">6.6</A>).
-<LI CLASS="li-enumerate">the jabber plugin does not parse XML; instead it uses packet
- acknowledgements. The rest of this paragraph will explain this
+ <A HREF="#sec:sessions:jabber">6.6.1</A>).
+<LI>the jabber plugin does not parse XML; instead it uses packet
+ acknowledgments. The rest of this paragraph will explain this
feature.
</OL>
-Since the jabber plugin do not parse XML (historically, it was for
+Since the jabber plugin does not parse XML (historically, it was for
performance reasons), and also due to the bidirectional nature of the
jabber protocol, you must have a way to tell when a request is
finished. There are 3 possibilities:
-<DL CLASS="description" COMPACT=compact><DT CLASS="dt-description">
- <B>ack=local</B><DD CLASS="dd-description"> as soon as a packet is received from the server, the
+<DL COMPACT=compact><DT>
+ <B>ack=local</B><DD> as soon as a packet is received from the server, the
request is considered as completed. Hence if you use a local ack with a request
that do not require a response from the server (presence for ex.), it
will wait forever (or until a timeout is reached).
- <DT CLASS="dt-description"><B>ack=no_ack</B><DD CLASS="dd-description"> as soon as the request is send, it is considered as completed (do
+ <DT><B>ack=no_ack</B><DD> as soon as the request is send, it is considered as completed (do
not wait for incoming data)
- <DT CLASS="dt-description"><B>ack=global</B><DD CLASS="dd-description"> synchronized users. its main use is for waiting for all
+ <DT><B>ack=global</B><DD> synchronized users. its main use is for waiting for all
users to connect before sending messages. To do that, set a request
with global ack (it can be the first presence msg:<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -506,7 +533,7 @@ <H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach<
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request&gt; &lt;jabber type="presence" ack="global"/&gt; &lt;/request&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -536,7 +563,7 @@ <H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach<
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default type="ts_jabber" name="global_number" value="100"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -566,7 +593,7 @@ <H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach<
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;users maxnumber="100" interarrival="1.0" unit="second"&gt;&lt;/users&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -586,11 +613,11 @@ <H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach<
</DL>
<!--TOC section Understanding idx-tsunami.xml configuration file-->
-<H2 CLASS="section"><A NAME="htoc19">6</A>&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</H2><!--SEC END -->
+<H2><A NAME="htoc20">6</A>&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</H2><!--SEC END -->
<!--TOC subsection File structure-->
-<H3 CLASS="subsection"><A NAME="htoc20">6.1</A>&nbsp;&nbsp;File structure</H3><!--SEC END -->
+<H3><A NAME="htoc21">6.1</A>&nbsp;&nbsp;File structure</H3><!--SEC END -->
Scenarios are enclosed into idx-tsunami tags:<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -606,7 +633,7 @@ <H3 CLASS="subsection"><A NAME="htoc20">6.1</A>&nbsp;&nbsp;File structure</H3><!
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE idx-tsunami SYSTEM "/usr/share/idx-tsunami/idx-tsunami-1.0.dtd" [] &gt;
&lt;idx-tsunami loglevel="info" dumptraffic="false"&gt;
@@ -627,7 +654,7 @@ <H3 CLASS="subsection"><A NAME="htoc20">6.1</A>&nbsp;&nbsp;File structure</H3><!
</TR></TABLE><BR>
<!--TOC subsection Clients and server-->
-<H3 CLASS="subsection"><A NAME="htoc21">6.2</A>&nbsp;&nbsp;Clients and server</H3><!--SEC END -->
+<H3><A NAME="htoc22">6.2</A>&nbsp;&nbsp;Clients and server</H3><!--SEC END -->
Scenarios start with clients (IDX-Tsunami cluster) and server definitions:<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -643,7 +670,7 @@ <H3 CLASS="subsection"><A NAME="htoc21">6.2</A>&nbsp;&nbsp;Clients and server</H
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;clients&gt;
&lt;client host="louxor" weight="1" maxusers="500"&gt;
&lt;ip value="10.9.195.12"&gt;&lt;/ip&gt;
@@ -679,7 +706,7 @@ <H3 CLASS="subsection"><A NAME="htoc21">6.2</A>&nbsp;&nbsp;Clients and server</H
with a higher weight, and 2 cpus. Two Erlang virtual machines will be
used to take advantage of the number of CPU.<BR>
<BR>
-By default, the load is distributed uniformely on all CPU (one cpu
+By default, the load is distributed uniformly on all CPU (one cpu
per client by default). The weight parameter (integer) can be used to
take into account the speed of the client machine. For instance, if
one real client has a weight of 1 and the other client has a weight
@@ -693,7 +720,7 @@ <H3 CLASS="subsection"><A NAME="htoc21">6.2</A>&nbsp;&nbsp;Clients and server</H
<BR>
<!--TOC subsection Monitoring-->
-<H3 CLASS="subsection"><A NAME="htoc22">6.3</A>&nbsp;&nbsp;Monitoring</H3><!--SEC END -->
+<H3><A NAME="htoc23">6.3</A>&nbsp;&nbsp;Monitoring</H3><!--SEC END -->
Scenarios can contain optional monitoring informations. For example,
here is a cluster monitoring definition based on Erlang agents, for
@@ -711,7 +738,7 @@ <H3 CLASS="subsection"><A NAME="htoc22">6.3</A>&nbsp;&nbsp;Monitoring</H3><!--SE
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;monitoring&gt;
&lt;monitor host="geronimo" type="erlang"&gt;&lt;/monitor&gt;
&lt;monitor host="bigfoot-1" type="erlang"&gt;&lt;/monitor&gt;
@@ -745,7 +772,7 @@ <H3 CLASS="subsection"><A NAME="htoc22">6.3</A>&nbsp;&nbsp;Monitoring</H3><!--SE
<BR>
<!--TOC subsection Defining the load progression-->
-<H3 CLASS="subsection"><A NAME="htoc23">6.4</A>&nbsp;&nbsp;Defining the load progression</H3><!--SEC END -->
+<H3><A NAME="htoc24">6.4</A>&nbsp;&nbsp;Defining the load progression</H3><!--SEC END -->
The load progression is set-up by defining several arrival phases:<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -761,7 +788,7 @@ <H3 CLASS="subsection"><A NAME="htoc23">6.4</A>&nbsp;&nbsp;Defining the load pro
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;arrivalphase phase="1" duration="10" unit="minute"&gt;
&lt;users interarrival="2" unit="second"&gt; &lt;/users&gt;
&lt;/arrivalphase&gt;
@@ -797,9 +824,9 @@ <H3 CLASS="subsection"><A NAME="htoc23">6.4</A>&nbsp;&nbsp;Defining the load pro
mean value of 100 requests per session and 10 new users per seconds,
the theoretical average throughput will be 1000 requests/ sec).<BR>
<BR>
-<!--TOC subsection Default values-->
+<!--TOC subsection Setting Default values-->
-<H3 CLASS="subsection"><A NAME="htoc24">6.5</A>&nbsp;&nbsp;Default values</H3><!--SEC END -->
+<H3><A NAME="htoc25">6.5</A>&nbsp;&nbsp;Setting Default values</H3><!--SEC END -->
Default values can be set-up globally: thinktime between requests
in the scenario and ssl cipher algorithms. These values overrides
@@ -817,7 +844,7 @@ <H3 CLASS="subsection"><A NAME="htoc24">6.5</A>&nbsp;&nbsp;Default values</H3><!
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default name="thinktime" value="3" random="false" override="true"/&gt;
&lt;default name="ssl_ciphers"
value="EXP1024-RC4-SHA,EDH-RSA-DES-CBC3-SHA"/&gt;
@@ -836,7 +863,7 @@ <H3 CLASS="subsection"><A NAME="htoc24">6.5</A>&nbsp;&nbsp;Default values</H3><!
</TR></TABLE><BR>
<!--TOC subsubsection Default values: Jabber-->
-<H4 CLASS="subsubsection"><A NAME="htoc25">6.5.1</A>&nbsp;&nbsp;Default values: Jabber</H4><!--SEC END -->
+<H4><A NAME="htoc26">6.5.1</A>&nbsp;&nbsp;Default values: Jabber</H4><!--SEC END -->
Default values for specific protocols can be defined. Here is an
example of default values for Jabber:<BR>
@@ -853,7 +880,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc25">6.5.1</A>&nbsp;&nbsp;Default values:
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default type="ts_jabber" name="global_number" value="5" /&gt;
&lt;default type="ts_jabber" name="userid_max" value="100" /&gt;
&lt;default type="ts_jabber" name="domain" value="jabber.org" /&gt;
@@ -875,17 +902,17 @@ <H4 CLASS="subsubsection"><A NAME="htoc25">6.5.1</A>&nbsp;&nbsp;Default values:
Using these values, users will be <FONT COLOR=purple>myuserXXX</FONT> where XXX is an integer in
the interval [1:userid_max] and passwd <FONT COLOR=purple>mypasswdXXX</FONT><BR>
<BR>
-If not set in the config file, the values will be set to:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
-global_number = TODO
-<LI CLASS="li-itemize">userid_max = TODO
-<LI CLASS="li-itemize">domain = TODO
-<LI CLASS="li-itemize">username = TODO
-<LI CLASS="li-itemize">passwd = TODO
+If not set in the configuration file, the values will be set to:
+<UL><LI>
+global_number = FIXME
+<LI>userid_max = FIXME
+<LI>domain = FIXME
+<LI>username = FIXME
+<LI>passwd = FIXME
</UL>
<!--TOC subsubsection Default values: HTTP-->
-<H4 CLASS="subsubsection"><A NAME="htoc26">6.5.2</A>&nbsp;&nbsp;Default values: HTTP</H4><!--SEC END -->
+<H4><A NAME="htoc27">6.5.2</A>&nbsp;&nbsp;Default values: HTTP</H4><!--SEC END -->
For HTTP, you can set the UserAgent values (available since
Idx-Tsunami 1.1.0), using a frequency for each value (the sum of all
@@ -903,7 +930,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc26">6.5.2</A>&nbsp;&nbsp;Default values:
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default type="ts_http" name="user_agent"&gt;
&lt;user_agent frequency="80"&gt;
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21
@@ -927,12 +954,16 @@ <H4 CLASS="subsubsection"><A NAME="htoc26">6.5.2</A>&nbsp;&nbsp;Default values:
</TR></TABLE><BR>
<!--TOC subsection Sessions-->
-<H3 CLASS="subsection"><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC END -->
+<H3><A NAME="htoc28">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC END -->
+
+<!--TOC subsubsection Overview and examples-->
+
+<H4><A NAME="htoc29">6.6.1</A>&nbsp;&nbsp;Overview and examples</H4><!--SEC END -->
Sessions define the content of the scenario itself. They describe
the requests to execute.<BR>
<BR>
-This example show several features of the HTTP protocol support in
+This example shows several features of the HTTP protocol support in
Tsunami: GET and POST request, basic authentication, transaction for
statistics definition, ...<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -948,7 +979,7 @@ <H3 CLASS="subsection"><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;session name="http-example" popularity="70" type="ts_http"&gt;
&lt;request&gt; &lt;http url="/" method="GET" version="1.1"&gt;
@@ -1028,7 +1059,7 @@ <H3 CLASS="subsection"><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;session popularity="70" name="jabber-example" type="ts_jabber"&gt;
&lt;request&gt; &lt;jabber type="connect" ack="no_ack" /&gt; &lt;/request&gt;
@@ -1078,9 +1109,9 @@ <H3 CLASS="subsection"><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-<!--TOC subsection Dynamic substitutions-->
+<!--TOC subsubsection Dynamic substitutions-->
-<H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions</H3><!--SEC END -->
+<H4><A NAME="htoc30">6.6.2</A>&nbsp;&nbsp;Dynamic substitutions</H4><!--SEC END -->
Dynamic substitution are mark-up placed in element of the scenario.
For HTTP, this mark-up can be placed in basic authentication (www_authenticate
@@ -1093,7 +1124,7 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
<BR>
When a substitution is requested, the substitution mark-up is replaced by
the result of the call to the Erlang function:
-<FONT COLOR=purple>Module:Function(Pid, DynData)</FONT> where Pid is the erlang process
+<FONT COLOR=purple>Module:Function(Pid, DynData)</FONT> where Pid is the Erlang process
id of the current virtual user and DynData the list of all Dynamic
variables (<B>Warn: before version 1.1.0, the argument was just the
Pid !</B>).<BR>
@@ -1112,7 +1143,7 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;session name="rec20040316-08:47" popularity="100" type="ts_http"&gt;
&lt;request subst="true"&gt;
&lt;http url="/echo?symbol=%%symbol:new%%" method="GET"&gt;
@@ -1145,7 +1176,7 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
-module(symbol).
-export([new/1]).
@@ -1168,7 +1199,7 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-As you can this, writing scenario with dynamic substitution is trivial.<BR>
+As you can see, writing scenario with dynamic substitution is trivial.<BR>
<BR>
If you want to set unique id, you can use the built-in function
<TT>ts_user_server:get_unique_id</TT>.
@@ -1185,7 +1216,7 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;session name="rec20040316-08:47" popularity="100" type="ts_http"&gt;
&lt;request subst="true"&gt;
&lt;http url="/echo?id=%%ts_user_server:get_unique_id%%" method="GET"&gt;
@@ -1206,14 +1237,14 @@ <H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions
</TR></TABLE><BR>
<!--TOC subsubsection Reading external file-->
-<H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external file</H4><!--SEC END -->
+<H4><A NAME="htoc31">6.6.3</A>&nbsp;&nbsp;Reading external file</H4><!--SEC END -->
<B>New in 1.0.3</B>: A new module <TT>ts_file_server</TT> is available. You
can use it to read external files. For example, if you need to read user
names and passwd from a csv file, you can do it with it (currently,
you can read only a single file).<BR>
<BR>
-You have to add this in the xml config file:
+You have to add this in the xml configuration file:
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
CELLSPACING=0>
@@ -1227,7 +1258,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;default name="file_server" value="/tmp/userlist.csv"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -1256,7 +1287,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
-module(readcsv).
-export([user/1]).
@@ -1277,7 +1308,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-in your session, use something like: <BR>
+In your session, use something like: <BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
CELLSPACING=0>
@@ -1291,7 +1322,7 @@ <H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request subst="true"&gt;
&lt;http url='/login.cgi' version='1.0' contents='%%readcsv:user%%&amp;amp;op=login'
content_type='application/x-www-form-urlencoded' method='POST'&gt;
@@ -1315,9 +1346,9 @@ <H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external
<TT>get_next_line</TT> function, when the end of file is reached, the
first line of the file will be the next line.<BR>
<BR>
-<!--TOC subsection Dynamic variables-->
+<!--TOC subsubsection Dynamic variables-->
-<H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3><!--SEC END -->
+<H4><A NAME="htoc32">6.6.4</A>&nbsp;&nbsp;Dynamic variables</H4><!--SEC END -->
In some cases, you may want to use a value given by the server in a
response later in the session, and this value is <B>dynamically
@@ -1339,7 +1370,7 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;form action="go.cgi" method="POST"&gt;
&lt;hidden name="random_num" value="42"&gt;&lt;/form&gt;
&lt;/form&gt;
@@ -1356,6 +1387,7 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
+with:
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
CELLSPACING=0>
@@ -1369,7 +1401,7 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request&gt;
&lt;http url="/testtsunami.html" method="GET" version="1.0"&gt;&lt;/http&gt;
&lt;dyn_variable name="random_num" &gt;&lt;/dyn_variable&gt;
@@ -1404,7 +1436,7 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request subst="true"&gt;
&lt;http url='/go.cgi' version='1.0'
contents='username=nic&amp;amp;random_num=%%_random_num%%&amp;amp;op=login'
@@ -1438,7 +1470,7 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request&gt;
&lt;http url="/testtsunami.html" method="GET" version="1.0"&gt;&lt;/http&gt;
&lt;dyn_variable name="mytitlevar"
@@ -1457,9 +1489,9 @@ <H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-<!--TOC subsection Checking the server's response-->
+<!--TOC subsubsection Checking the server's response-->
-<H3 CLASS="subsection"><A NAME="htoc31">6.9</A>&nbsp;&nbsp;Checking the server's response</H3><!--SEC END -->
+<H4><A NAME="htoc33">6.6.5</A>&nbsp;&nbsp;Checking the server's response</H4><!--SEC END -->
With the attribute <TT>match</TT> in a <TT>request</TT> tag, you can
check the server's response against a given string. If it matches, this
@@ -1482,7 +1514,7 @@ <H3 CLASS="subsection"><A NAME="htoc31">6.9</A>&nbsp;&nbsp;Checking the server's
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;request match="Welcome !"&gt;
&lt;http url='/login.php' version='1.0' method='POST'
contents='username=nic&amp;amp;user_password=sesame'
@@ -1501,57 +1533,66 @@ <H3 CLASS="subsection"><A NAME="htoc31">6.9</A>&nbsp;&nbsp;Checking the server's
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
+You can use a regexp instead of a simple string.<BR>
+<BR>
<!--TOC section Statistics and reports-->
-<H2 CLASS="section"><A NAME="htoc32">7</A>&nbsp;&nbsp;Statistics and reports</H2><!--SEC END -->
+<H2><A NAME="htoc34">7</A>&nbsp;&nbsp;Statistics and reports</H2><!--SEC END -->
<A NAME="sec:statistics-reports"></A>
-Available stats:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<!--TOC subsection Available stats-->
+
+<H3><A NAME="htoc35">7.1</A>&nbsp;&nbsp;Available stats</H3><!--SEC END -->
+
+<UL><LI>
request (response time for each request)
-<LI CLASS="li-itemize">page (response time for each set of requests (a page is a group
+<LI>page (response time for each set of requests (a page is a group
of request not separated by a thinktime))
-<LI CLASS="li-itemize">connect (duration of the connection establishment)
-<LI CLASS="li-itemize">reconnect (number of reconnection)
-<LI CLASS="li-itemize">size (size of responses)
-<LI CLASS="li-itemize">session (duration of a user's session)
-<LI CLASS="li-itemize">users (number of simultaneous users)
-<LI CLASS="li-itemize">custom transactions
+<LI>connect (duration of the connection establishment)
+<LI>reconnect (number of reconnection)
+<LI>size (size of responses)
+<LI>session (duration of a user's session)
+<LI>users (number of simultaneous users)
+<LI>custom transactions
</UL>
The mean response time (for requests, page, etc.) is computed every 10
sec (and reset). That's why you have the highest mean and lowest mean
values in the Stats report (the mean for the whole test is not
computed, since it's not very meaningful if you have several phases
-with differents input rate in your setup).<BR>
+with different input rates in your setup).<BR>
<BR>
HTTP specific stats:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
counter for each response status (200, 404, etc.)
</UL>
+<!--TOC subsection Design-->
+
+<H3><A NAME="htoc36">7.2</A>&nbsp;&nbsp;Design</H3><!--SEC END -->
+
A bit of explanation on the design and internals of the statistics engine:<BR>
<BR>
IDX-tsunami was designed to handle thousands of requests/sec, for very
long period of times (several hours) so it do not write all data to
-the disk and do the maths after the end of a test (for performance
-reasons). Instead it compute on the fly an estimation of the mean and
-standard variation for each type of data, and write these estimations
-every 10 seconds to disk (and then start a new estimation for the next
-10 sec). These computations are done for two kinds of data:
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+the disk (for performance reasons). Instead it computes on the fly an
+estimation of the mean and standard variation for each type of data,
+and writes these estimations every 10 seconds to the disk (and then
+starts a new estimation for the next 10 sec). These computations are
+done for two kinds of data:
+<UL><LI>
<TT>sample</TT>, for things like response time
-<LI CLASS="li-itemize"><TT>sample_counter</TT> when the input is a cumulative one (number of
+<LI><TT>sample_counter</TT> when the input is a cumulative one (number of
packet sent for ex.).
</UL>
There are also two other types of useful data (no averaging is done for
those) :
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<TT>counter</TT>: a simple counter, for HTTP status code for ex.
-<LI CLASS="li-itemize"><TT>sum</TT> for ex. the cumulative HTTP response's size (it gives an
+<LI><TT>sum</TT> for ex. the cumulative HTTP response's size (it gives an
estimated bandwidth usage).
</UL>
<!--TOC subsection Generating the report-->
-<H3 CLASS="subsection"><A NAME="htoc33">7.1</A>&nbsp;&nbsp;Generating the report</H3><!--SEC END -->
+<H3><A NAME="htoc37">7.3</A>&nbsp;&nbsp;Generating the report</H3><!--SEC END -->
cd to the log directory of your test (say
<TT>~/.idx-tsunami/log/20040325-16:33/</TT>) and use the script
@@ -1569,8 +1610,8 @@ <H3 CLASS="subsection"><A NAME="htoc33">7.1</A>&nbsp;&nbsp;Generating the report
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
-/usr/lib/idx-tsunami/bin/analyse_msg.pl --stats idx-tsunami.log --html --extra --plot
+<TR><TD><PRE>
+/usr/lib/idx-tsunami/bin/analyse_msg.pl --html --extra --plot
</PRE></TD>
</TR></TABLE></TD>
<TD BGCOLOR=black COLSPAN="1"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
@@ -1584,52 +1625,50 @@ <H3 CLASS="subsection"><A NAME="htoc33">7.1</A>&nbsp;&nbsp;Generating the report
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
+(use <FONT COLOR=purple>--help</FONT> to view all available options)<BR>
+<BR>
<!--TOC subsection Tsunami summary-->
-<H3 CLASS="subsection"><A NAME="htoc34">7.2</A>&nbsp;&nbsp;Tsunami summary</H3><!--SEC END -->
+<H3><A NAME="htoc38">7.4</A>&nbsp;&nbsp;Tsunami summary</H3><!--SEC END -->
-<BLOCKQUOTE CLASS="figure"><DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV>
- <DIV CLASS="center">
+<BLOCKQUOTE><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
+ <DIV ALIGN=center>
<IMG SRC="images/tsunami-report.png" ALT="images/tsunami-report.png">
</DIV>
<BR>
-<BR>
-<DIV CLASS="center">Figure 1: Report</DIV><BR>
-<BR>
+<DIV ALIGN=center>Figure 1: Report</DIV><BR>
<A NAME="fig:report"></A>
-<DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
<!--TOC subsection Graphical overview-->
-<H3 CLASS="subsection"><A NAME="htoc35">7.3</A>&nbsp;&nbsp;Graphical overview</H3><!--SEC END -->
+<H3><A NAME="htoc39">7.5</A>&nbsp;&nbsp;Graphical overview</H3><!--SEC END -->
-<BLOCKQUOTE CLASS="figure"><DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV>
- <DIV CLASS="center">
+<BLOCKQUOTE><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
+ <DIV ALIGN=center>
<IMG SRC="images/tsunami-graph.png" ALT="images/tsunami-graph.png">
</DIV>
<BR>
-<BR>
-<DIV CLASS="center">Figure 2: Graphical output</DIV><BR>
-<BR>
+<DIV ALIGN=center>Figure 2: Graphical output</DIV><BR>
<A NAME="fig:graph"></A>
-<DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
<!--TOC section References-->
-<H2 CLASS="section"><A NAME="htoc36">8</A>&nbsp;&nbsp;References</H2><!--SEC END -->
+<H2><A NAME="htoc40">8</A>&nbsp;&nbsp;References</H2><!--SEC END -->
-<UL CLASS="itemize"><LI CLASS="li-itemize">
+<UL><LI>
<EM>IDX-Tsunami</EM> home page: <A HREF="http://tsunami.idealx.org/"><TT>http://tsunami.idealx.org/</TT></A>
-<LI CLASS="li-itemize"><EM>IDX-Tsunami</EM> description (French)<SUP><A NAME="text1" HREF="#note1">1</A></SUP>
-<LI CLASS="li-itemize">Erlang web site <A HREF="http://www.erlang.org/"><TT>http://www.erlang.org/</TT></A>
-<LI CLASS="li-itemize">Erlang programmation, Mickaël Rémond, Editions Eyrolles, 2003
+<LI><EM>IDX-Tsunami</EM> description (French)<SUP><A NAME="text1" HREF="#note1">1</A></SUP>
+<LI>Erlang web site <A HREF="http://www.erlang.org/"><TT>http://www.erlang.org/</TT></A>
+<LI>Erlang programmation, Mickaël Rémond, Editions Eyrolles, 2003
<SUP><A NAME="text2" HREF="#note2">2</A></SUP>
-<LI CLASS="li-itemize"><EM>Making reliable system in presence of software errors</EM>, Doctoral Thesis,
+<LI><EM>Making reliable system in presence of software errors</EM>, Doctoral Thesis,
Joe Armstrong, Stockholm, 2003 <SUP><A NAME="text3" HREF="#note3">3</A></SUP>
</UL>
<!--TOC section Acknowledgments-->
-<H2 CLASS="section"><A NAME="htoc37">9</A>&nbsp;&nbsp;Acknowledgments</H2><!--SEC END -->
+<H2><A NAME="htoc41">9</A>&nbsp;&nbsp;Acknowledgments</H2><!--SEC END -->
The first version of this document was based on a talk given by Mickael
Rémond<SUP><A NAME="text4" HREF="#note4">4</A></SUP> during an Object
@@ -1638,11 +1677,11 @@ <H2 CLASS="section"><A NAME="htoc37">9</A>&nbsp;&nbsp;Acknowledgments</H2><!--SE
<BR>
<!--TOC section Frequently Asked Questions-->
-<H2 CLASS="section"><A NAME="htoc38">A</A>&nbsp;&nbsp;Frequently Asked Questions</H2><!--SEC END -->
+<H2><A NAME="htoc42">A</A>&nbsp;&nbsp;Frequently Asked Questions</H2><!--SEC END -->
-<!--TOC subsection IDX-tsunami crash when I start it -->
+<!--TOC subsection IDX-tsunami crashes when I start it -->
-<H3 CLASS="subsection"><A NAME="htoc39">A.1</A>&nbsp;&nbsp;IDX-tsunami crash when I start it </H3><!--SEC END -->
+<H3><A NAME="htoc43">A.1</A>&nbsp;&nbsp;IDX-tsunami crashes when I start it </H3><!--SEC END -->
Does your Erlang system has ssl support enabled ?<BR>
<BR>
@@ -1660,7 +1699,7 @@ <H3 CLASS="subsection"><A NAME="htoc39">A.1</A>&nbsp;&nbsp;IDX-tsunami crash whe
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&gt; erl
Eshell V5.2 (abort with ^G)
1&gt; ssl:start()
@@ -1680,7 +1719,7 @@ <H3 CLASS="subsection"><A NAME="htoc39">A.1</A>&nbsp;&nbsp;IDX-tsunami crash whe
</TR></TABLE><BR>
<!--TOC subsection IDX-tsunami still doesn't start ...-->
-<H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doesn't start ...</H3><!--SEC END -->
+<H3><A NAME="htoc44">A.2</A>&nbsp;&nbsp;IDX-tsunami still doesn't start ...</H3><!--SEC END -->
Most of the time, when a crash happened at startup without any traffic
generated, the problem arise because the main Erlang controller node cannot
@@ -1698,7 +1737,7 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
===============================================
=ERROR REPORT==== 4-May-2004::22:38:26 ===
** Generic server ts_config_server terminating
@@ -1760,12 +1799,12 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
</TR></TABLE><BR>
IDX-Tsunami launches a new erl virtual machine to do the actual
injection even when you have only one machine in the injection
-cluster. This is because it need to by-pass some limit with the number
+cluster. This is because it needs to by-pass some limit with the number
of open socket from a single process (1024 most of the time). The idea
is to have several system processes (Erl beam) that can handle only a
small part of the network connection from the given computer. When the
<TT>maxclient</TT> limit (simultaneous) is reach, a new Erlang beam is launched
-and the newest connection can be handle by the new beam).<BR>
+and the newest connection can be handled by the new beam).<BR>
<BR>
The problem is that the Erlang slave module cannot start a local slave
node. It tries to start it with the short node name
@@ -1774,7 +1813,7 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
start. Most of the time, adding the short name with the correct IP
address in the <TT>/etc/hosts</TT> file is sufficient to make it work.<BR>
<BR>
-You can test this using this simple commands:
+You can test this using these simple commands:
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
CELLSPACING=0>
@@ -1788,7 +1827,7 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&gt;erl -rsh ssh -sname foo -setcookie mycookie
Eshell V5.4.3 (abort with ^G)
@@ -1807,7 +1846,7 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-Note that you do not need to use the 127.0.0.1 address in the config file.
+Note that you do not need to use the 127.0.0.1 address in the configuration file.
It will not work if you use it as the injection interface. The shortname
of your client machine should not refer to this address.<BR>
<BR>
@@ -1827,7 +1866,7 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
&lt;client host="mymachine" use_controller_vm="true"&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -1848,18 +1887,44 @@ <H3 CLASS="subsection"><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doe
paths (<I>ie.</I> when you shell into the account you get the users shell,
when you execute a command via ssh you don't) and this makes it
impossible to start an erlang node (if erlang is installed in
-/usr/local for example).<BR>
-<BR>
-Run:
-ssh myhostname erl<BR>
+<TT>/usr/local</TT> for example).<BR>
<BR>
+Run:<BR>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
+<TR><TD><TABLE BORDER=0 CELLPADDING=0
+ CELLSPACING=0>
+<TR><TD BGCOLOR=black COLSPAN="3"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR>
+<TR><TD BGCOLOR=black COLSPAN="1"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
+<TR><TD><PRE>
+ssh myhostname erl
+</PRE></TD>
+</TR></TABLE></TD>
+<TD BGCOLOR=black COLSPAN="1"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR>
+<TR><TD BGCOLOR=black COLSPAN="3"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR></TABLE></TD>
+</TR></TABLE><BR>
If the erlang shell doesn't start then check what paths sshd was compiled with
-(in SuSE see /etc/ssh/sshd_config) and symlink from one of the approved paths
+(in SuSE see <TT>/etc/ssh/sshd_config</TT>) and symlink from one of the approved paths
to the erlang executable (thanks to Gordon Guthrie for reporting this).<BR>
<BR>
-<!--TOC subsection IDX-tsunami still crash/fails when I start it !-->
+<!--TOC subsection IDX-tsunami still crashes/fails when I start it !-->
-<H3 CLASS="subsection"><A NAME="htoc41">A.3</A>&nbsp;&nbsp;IDX-tsunami still crash/fails when I start it !</H3><!--SEC END -->
+<H3><A NAME="htoc45">A.3</A>&nbsp;&nbsp;IDX-tsunami still crashes/fails when I start it !</H3><!--SEC END -->
First look at the log file
<TT>~/.idx-tsunami/log/XXX/tsunami_controller@yourhostname'</TT> to see
@@ -1880,7 +1945,7 @@ <H3 CLASS="subsection"><A NAME="htoc41">A.3</A>&nbsp;&nbsp;IDX-tsunami still cra
Erlang.
<!--TOC subsection What is the format of the stats file idx-tsunami.log ?-->
-<H3 CLASS="subsection"><A NAME="htoc42">A.4</A>&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</H3><!--SEC END -->
+<H3><A NAME="htoc46">A.4</A>&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</H3><!--SEC END -->
<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
@@ -1895,7 +1960,7 @@ <H3 CLASS="subsection"><A NAME="htoc42">A.4</A>&nbsp;&nbsp;What is the format of
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
# stats: dump at 1083694995
stats: users 11 11
stats: request 41 1.03289 0.125108 1.59802 0.901978
@@ -1937,9 +2002,9 @@ <H3 CLASS="subsection"><A NAME="htoc42">A.4</A>&nbsp;&nbsp;What is the format of
<BR>
<TT> # stats:'name' count(during the last 10sec), totalcount(since the beginning)</TT><BR>
<BR>
-<!--TOC subsection How can i specify the number of concurrent users ?-->
+<!--TOC subsection How can I specify the number of concurrent users ?-->
-<H3 CLASS="subsection"><A NAME="htoc43">A.5</A>&nbsp;&nbsp;How can i specify the number of concurrent users ?</H3><!--SEC END -->
+<H3><A NAME="htoc47">A.5</A>&nbsp;&nbsp;How can I specify the number of concurrent users ?</H3><!--SEC END -->
You can't. But it's on purpose: the load generated by
<EM>IDX-Tsunami</EM> is dependent on the arrival time between new
@@ -1955,11 +2020,44 @@ <H3 CLASS="subsection"><A NAME="htoc43">A.5</A>&nbsp;&nbsp;How can i specify the
<BR>
<!--TOC subsection SNMP monitoring doesn't work ?!-->
-<H3 CLASS="subsection"><A NAME="htoc44">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn't work ?!</H3><!--SEC END -->
+<H3><A NAME="htoc48">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn't work ?!</H3><!--SEC END -->
SNMP currently doesn't work with erlang R10B and up. Use erlang R9C-2 if you
need SNMP.<BR>
<BR>
+It use SNMP v1 and the 'public' community. It has been tested with
+<A HREF="http://net-snmp.sourceforge.net/"><TT>http://net-snmp.sourceforge.net/</TT></A>.<BR>
+<BR>
+You can try with <TT>snmpwalk</TT> to see if your snmpd config is ok:<BR>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
+<TR><TD><TABLE BORDER=0 CELLPADDING=0
+ CELLSPACING=0>
+<TR><TD BGCOLOR=black COLSPAN="3"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR>
+<TR><TD BGCOLOR=black COLSPAN="1"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
+<TR><TD><PRE>
+&gt;snmpwalk -v 1 -c public IP-OF-YOUR-SERVER .1.3.6.1.4.1.2021.4.5.0
+UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1033436
+</PRE></TD>
+</TR></TABLE></TD>
+<TD BGCOLOR=black COLSPAN="1"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR>
+<TR><TD BGCOLOR=black COLSPAN="3"><TABLE CELLSPACING="1" CELLPADDING=0 BORDER=0>
+<TR><TD>
+ </TD>
+</TR></TABLE></TD>
+</TR></TABLE></TD>
+</TR></TABLE><BR>
There is a small bug in the <TT>snmp\_mgr</TT> module in old Erlang
release (R9C-0). You have to apply this patch to make it
work. This is fixed in erlang R9C-1 and up.<BR>
@@ -1976,7 +2074,7 @@ <H3 CLASS="subsection"><A NAME="htoc44">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE CLASS="verbatim">
+<TR><TD><PRE>
--- lib/snmp-3.4/src/snmp_mgr.erl.orig 2004-03-22 15:21:59.000000000 +0100
+++ lib/snmp-3.4/src/snmp_mgr.erl 2004-03-22 15:23:46.000000000 +0100
@@ -296,6 +296,10 @@
@@ -2004,10 +2102,10 @@ <H3 CLASS="subsection"><A NAME="htoc44">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn
</TR></TABLE></TD>
</TR></TABLE><BR>
<!--BEGIN NOTES document-->
-<HR WIDTH="50%" SIZE=1><DL CLASS="list"><DT CLASS="dt-list"><A NAME="note1" HREF="#text1"><FONT SIZE=5>1</FONT></A><DD CLASS="dd-list"><A HREF="http://www.erlang-projects.org/Members/mremond/events/dossier_de_presentat/block_10766817551485/file"><TT>http://www.erlang-projects.org/Members/mremond/events/dossier_de_presentat/block_10766817551485/file</TT></A>
-<DT CLASS="dt-list"><A NAME="note2" HREF="#text2"><FONT SIZE=5>2</FONT></A><DD CLASS="dd-list"><A HREF="http://www.editions-eyrolles.com/php.accueil/Ouvrages/ouvrage.php3?ouv_ean13=9782212110791"><TT>http://www.editions-eyrolles.com/php.accueil/Ouvrages/ouvrage.php3?ouv_ean13=9782212110791</TT></A>
-<DT CLASS="dt-list"><A NAME="note3" HREF="#text3"><FONT SIZE=5>3</FONT></A><DD CLASS="dd-list"><A HREF="http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf"><TT>http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf</TT></A>
-<DT CLASS="dt-list"><A NAME="note4" HREF="#text4"><FONT SIZE=5>4</FONT></A><DD CLASS="dd-list"><A HREF="mailto:mickael.remond@erlang-fr.org">mickael.remond@erlang-fr.org</A>
+<HR WIDTH="50%" SIZE=1><DL><DT><A NAME="note1" HREF="#text1"><FONT SIZE=5>1</FONT></A><DD><A HREF="http://www.erlang-projects.org/Members/mremond/events/dossier_de_presentat/block_10766817551485/file"><TT>http://www.erlang-projects.org/Members/mremond/events/dossier_de_presentat/block_10766817551485/file</TT></A>
+<DT><A NAME="note2" HREF="#text2"><FONT SIZE=5>2</FONT></A><DD><A HREF="http://www.editions-eyrolles.com/php.accueil/Ouvrages/ouvrage.php3?ouv_ean13=9782212110791"><TT>http://www.editions-eyrolles.com/php.accueil/Ouvrages/ouvrage.php3?ouv_ean13=9782212110791</TT></A>
+<DT><A NAME="note3" HREF="#text3"><FONT SIZE=5>3</FONT></A><DD><A HREF="http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf"><TT>http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf</TT></A>
+<DT><A NAME="note4" HREF="#text4"><FONT SIZE=5>4</FONT></A><DD><A HREF="mailto:mickael.remond@erlang-fr.org">mickael.remond@erlang-fr.org</A>
</DL>
<!--END NOTES-->
<!--HTMLFOOT-->
@@ -2015,12 +2113,14 @@ <H3 CLASS="subsection"><A NAME="htoc44">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn
<DIV class="piedpage">
<HR>
-<P>Copyright © 2004 IDEALX S.A.S..
- «&nbsp;Linux&nbsp;» is the property of Linus Torvalds. All other trademarks belong to their respective owners.
+<P>
</DIV>
<!--ENDHTML-->
<!--FOOTER-->
-<HR SIZE=2><BLOCKQUOTE CLASS="quote"><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
-</EM><A HREF="http://pauillac.inria.fr/~maranget/hevea/index.html"><EM>H<FONT SIZE=2><sup>E</sup></FONT>V<FONT SIZE=2><sup>E</sup></FONT>A</EM></A><EM>.</EM></BLOCKQUOTE></BODY>
+<HR SIZE=2>
+<BLOCKQUOTE><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
+</EM><A HREF="http://pauillac.inria.fr/~maranget/hevea/index.html"><EM>H<FONT SIZE=2><sup>E</sup></FONT>V<FONT SIZE=2><sup>E</sup></FONT>A</EM></A><EM>.
+</EM></BLOCKQUOTE>
+</BODY>
</HTML>
Please sign in to comment.
Something went wrong with that request. Please try again.