Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

update

SVN Revision: 542
  • Loading branch information...
commit 40f763b442815c097b8904275418a96535df88f3 1 parent a6f8027
@nniclausse nniclausse authored
Showing with 382 additions and 250 deletions.
  1. +6 −4 TODO
  2. +376 −246 doc/user_manual.html
View
10 TODO
@@ -1,21 +1,23 @@
P2 make SNMP work with erlang R10B
-P2 fix confusion with ack type and sync/async proto
-P3 improve documentation
P3 more test with jabber (roster)
+P3 add recorder for jabber
P3 make SNMP customizable
-P3 better report/graphics generation
+P3 better report/graphics generation
P3 other useful protocols: smtp, ldap, sql, ssh ...
P3 add XML backend for stats
P3 finish rrdtool backend for stats
P3 add comments for edoc
+P3 add unit testing
P3 more http headers (referer)
+P3 make it work on windows
+P3 fix confusion with ack type and sync/async proto
-P4 learn how to really use xmerl
P4 add a web interface (with an embedded yaws)
P4 add multiple tcp connections per client (for http)
+P5 learn how to really use xmerl
P5 groupchat for Jabber
P5 handle http/1.1 pipelining
View
622 doc/user_manual.html
@@ -1,15 +1,33 @@
+
+
+
<!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-1">
-<META name="GENERATOR" content="hevea 1.07">
+<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>
+
<BODY >
-<!--HEVEA command line is: hevea -fix -I /user/nniclaus/home/cvs/projetdoc/common//styles -exec xxdate.exe -pedantic IDXDOC-DOTORG.hva user_manual.tex -->
+<!--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 -->
<!--HTMLHEAD-->
@@ -24,105 +42,103 @@
-
-
<H1 ALIGN=center>IDX-Tsunami User's manual</H1>
-<DIV ALIGN=center>
+<DIV CLASS="center">
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1>
-<TR><TD ALIGN=left NOWRAP bgcolor="#f2f2f2">Version:</TD>
-<TD ALIGN=left NOWRAP>1.17</TD>
+<TR><TD ALIGN=left NOWRAP bgcolor="#F2F2F2">Version:</TD>
+<TD ALIGN=left NOWRAP>540</TD>
</TR>
-<TR><TD ALIGN=left NOWRAP bgcolor="#f2f2f2">Date :</TD>
-<TD ALIGN=left NOWRAP>September 5, 2005</TD>
+<TR><TD ALIGN=left NOWRAP bgcolor="#F2F2F2">Date :</TD>
+<TD ALIGN=left NOWRAP> 9th October,&nbsp;2005</TD>
</TR></TABLE>
</DIV>
<BR>
-<DIV ALIGN=center>
+<DIV CLASS="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 Table of Contents-->
+<!--TOC section Contents-->
-<H2>Table of Contents</H2><!--SEC END -->
+<H2 CLASS="section">Contents</H2><!--SEC END -->
-<UL><LI>
+<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc1">1&nbsp;&nbsp;Introduction</A>
-<UL><LI>
+<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc2">1.1&nbsp;&nbsp;What is IDX-Tsunami ?</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>
+<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>
</UL>
-<LI><A HREF="#htoc5">2&nbsp;&nbsp;Features</A>
-<UL><LI>
+<LI CLASS="li-toc"><A HREF="#htoc5">2&nbsp;&nbsp;Features</A>
+<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc6">2.1&nbsp;&nbsp;IDX-Tsunami main features</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>
+<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>
</UL>
-<LI><A HREF="#htoc11">3&nbsp;&nbsp;Installation</A>
-<UL><LI>
+<LI CLASS="li-toc"><A HREF="#htoc11">3&nbsp;&nbsp;Installation</A>
+<UL CLASS="toc"><LI CLASS="li-toc">
<A HREF="#htoc12">3.1&nbsp;&nbsp;Dependencies</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>
+<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>
</UL>
-<LI><A HREF="#htoc16">4&nbsp;&nbsp;HTTP benchmark approach</A>
-<UL><LI>
+<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>
</UL>
-<LI><A HREF="#htoc18">5&nbsp;&nbsp;Jabber benchmark approach</A>
-<LI><A HREF="#htoc19">6&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</A>
-<UL><LI>
+<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><A HREF="#htoc21">6.2&nbsp;&nbsp;Clients and server</A>
-<LI><A HREF="#htoc22">6.3&nbsp;&nbsp;Monitoring</A>
-<LI><A HREF="#htoc23">6.4&nbsp;&nbsp;Defining the load progression</A>
-<LI><A HREF="#htoc24">6.5&nbsp;&nbsp;Default values</A>
-<UL><LI>
+<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><A HREF="#htoc26">6.5.2&nbsp;&nbsp;Default values: HTTP</A>
+<LI CLASS="li-toc"><A HREF="#htoc26">6.5.2&nbsp;&nbsp;Default values: HTTP</A>
</UL>
-<LI><A HREF="#htoc27">6.6&nbsp;&nbsp;Sessions</A>
-<LI><A HREF="#htoc28">6.7&nbsp;&nbsp;Dynamic substitutions</A>
-<UL><LI>
+<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>
</UL>
-<LI><A HREF="#htoc30">6.8&nbsp;&nbsp;Dynamic variables</A>
-<LI><A HREF="#htoc31">6.9&nbsp;&nbsp;Checking the server's response</A>
+<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><A HREF="#htoc32">7&nbsp;&nbsp;Statistics and reports</A>
-<UL><LI>
+<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><A HREF="#htoc34">7.2&nbsp;&nbsp;Tsunami summary</A>
-<LI><A HREF="#htoc35">7.3&nbsp;&nbsp;Graphical overview</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>
</UL>
-<LI><A HREF="#htoc36">8&nbsp;&nbsp;References</A>
-<LI><A HREF="#htoc37">9&nbsp;&nbsp;Acknowledgments</A>
-<LI><A HREF="#htoc38">A&nbsp;&nbsp;Frequently Asked Questions</A>
-<UL><LI>
+<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><A HREF="#htoc40">A.2&nbsp;&nbsp;IDX-tsunami still doesn't start ...</A>
-<LI><A HREF="#htoc41">A.3&nbsp;&nbsp;IDX-tsunami still crash/fails when I start it !</A>
-<LI><A HREF="#htoc42">A.4&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</A>
-<LI><A HREF="#htoc43">A.5&nbsp;&nbsp;How can i specify the number of concurrent users ?</A>
-<LI><A HREF="#htoc44">A.6&nbsp;&nbsp;SNMP monitoring doesn't work ?!</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>
</UL>
</UL>
<!--TOC section Introduction-->
-<H2><A NAME="htoc1">1</A>&nbsp;&nbsp;Introduction</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc1">1</A>&nbsp;&nbsp;Introduction</H2><!--SEC END -->
<!--TOC subsection What is IDX-Tsunami ?-->
-<H3><A NAME="htoc2">1.1</A>&nbsp;&nbsp;What is IDX-Tsunami ?</H3><!--SEC END -->
+<H3 CLASS="subsection"><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
@@ -132,25 +148,25 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection What is Erlang and why is it important for IDX-Tsunami ?-->
-<H3><A NAME="htoc3">1.2</A>&nbsp;&nbsp;What is Erlang and why is it important for IDX-Tsunami ?</H3><!--SEC END -->
+<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 -->
-<EM>IDX-Tsunami</EM> main strength is its ability to simulate a huge number a
+<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
generate a really impressive load on a server with a modest cluster,
easy to set-up and to maintain.<BR>
<BR>
<EM>IDX-Tsunami</EM> is developed in Erlang and this is where the power
-of <EM>IDX-Tsunami</EM> relies.<BR>
+of <EM>IDX-Tsunami</EM> resides.<BR>
<BR>
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><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>Performance</EM>: Erlang has been made to support hundred thousands
of lightweight processes in a single virtual machine.
-<LI><EM>Scalability</EM>: Erlang development environment is naturally
+<LI CLASS="li-itemize"><EM>Scalability</EM>: Erlang runtime environment is naturally
distributed, promoting the idea of process's location transparency.
-<LI><EM>Fault-tolerance</EM>:Erlang has been built to develop robust,
+<LI CLASS="li-itemize"><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>
@@ -159,12 +175,12 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection IDX-Tsunami background-->
-<H3><A NAME="htoc4">1.3</A>&nbsp;&nbsp;IDX-Tsunami background</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc4">1.3</A>&nbsp;&nbsp;IDX-Tsunami background</H3><!--SEC END -->
History:
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>IDX-Tsunami</EM> is being developed since 2001
-<LI>It is an industrial implementation of a <EM>stochastic model</EM>
+<LI CLASS="li-itemize">It is an industrial strenght 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>
@@ -172,106 +188,106 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
and Performance Evaluation of Web Servers</B>. <EM>Performance Evaluation,
Volume 46, Issue 2-3, October 2001</EM>.<BR>
<BR>
-<LI>This model has already been tested in the INRIA <EM>WAGON</EM>
+<LI CLASS="li-itemize">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><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>Jabber</EM> protocol: 10 000 simultaneous users.
<EM>IDX-Tsunami</EM> were running on a 3-computers cluster (CPU
800Mhz)
-<LI><EM>HTTP and HTTPS</EM> protocol: 12 000 simultaneous users.
+<LI CLASS="li-itemize"><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><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>DGI</EM> (Direction Générale des impôts): French finance ministry
-<LI><EM>Cap Gemini Ernst &amp; Young</EM>
-<LI><EM>IFP</EM> (Institut Français du Pétrole): French Research Organization
+<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
for Petroleum
-<LI><EM>LibertySurf</EM>
+<LI CLASS="li-itemize"><EM>LibertySurf</EM>
</UL>
<!--TOC section Features-->
-<H2><A NAME="htoc5">2</A>&nbsp;&nbsp;Features</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc5">2</A>&nbsp;&nbsp;Features</H2><!--SEC END -->
<!--TOC subsection IDX-Tsunami main features-->
-<H3><A NAME="htoc6">2.1</A>&nbsp;&nbsp;IDX-Tsunami main features</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc6">2.1</A>&nbsp;&nbsp;IDX-Tsunami main features</H3><!--SEC END -->
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>High Performance</EM>: <EM>IDX-Tsunami</EM> can simulate a
- huge number of simultaneous users par physical computer: It can
+ huge number of simultaneous users per physical computer: It can
simulates thousands of users on a single CPU (Note: a simulated user
is not always active: it can be idle during a <TT>thinktime</TT>
period). Traditional injection tools can hardly go further than a
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><EM>Distributed</EM>: the load can be distributed on a cluster of
+<LI CLASS="li-itemize"><EM>Distributed</EM>: the load can be distributed on a cluster of
client machines
-<LI><EM>Multi-Protocols</EM> using a plug-in system: HTTP (both standard
+<LI CLASS="li-itemize"><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><EM>SSL</EM> support
-<LI><EM>Several IP addresses</EM> can be used on a single machine using
+<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
the underlying OS IP Aliasing
-<LI><EM>OS monitoring</EM> (CPU, memory and network traffic) using Erlang
+<LI CLASS="li-itemize"><EM>OS monitoring</EM> (CPU, memory and network traffic) using Erlang
agents on remote servers or <EM>SNMP</EM>
-<LI><EM>XML configuration system</EM>: complex user's scenarios are written
+<LI CLASS="li-itemize"><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><EM>Dynamic scenarios</EM>: You can get dynamic data from the
+<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
subsequent requests.
-<LI><EM>Mixed behaviours</EM>: several sessions can be used to simulate
+<LI CLASS="li-itemize"><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><EM>Stochastic processes</EM>: in order to generate a realistic traffic,
+<LI CLASS="li-itemize"><EM>Stochastic processes</EM>: in order to generate a realistic traffic,
user thinktimes and the arrival rate can be randomize using a probability
-distribution (exponential currently)
+distribution (currently exponential)
</UL>
<!--TOC subsection HTTP related features-->
-<H3><A NAME="htoc7">2.2</A>&nbsp;&nbsp;HTTP related features</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc7">2.2</A>&nbsp;&nbsp;HTTP related features</H3><!--SEC END -->
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
HTTP/1.0 and HTTP/1.1 support
-<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
+<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
handled).
-<LI>HTTP server or proxy server load testing.
+<LI CLASS="li-itemize">HTTP server or proxy server load testing.
</UL>
<!--TOC subsection Jabber related features-->
-<H3><A NAME="htoc8">2.3</A>&nbsp;&nbsp;Jabber related features</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc8">2.3</A>&nbsp;&nbsp;Jabber related features</H3><!--SEC END -->
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
Authentication, presence and register 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
+<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
</UL>
<!--TOC subsection Complete reports set-->
-<H3><A NAME="htoc9">2.4</A>&nbsp;&nbsp;Complete reports set</H3><!--SEC END -->
+<H3 CLASS="subsection"><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><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<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><EM>Errors</EM>: Statistics on page return code to trace errors
-<LI><EM>Target server behaviour</EM>: An Erlang agent can gather information
+<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
consumption and network traffic. SNMP is also supported.
</UL>
@@ -284,18 +300,18 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection Highlights-->
-<H3><A NAME="htoc10">2.5</A>&nbsp;&nbsp;Highlights</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc10">2.5</A>&nbsp;&nbsp;Highlights</H3><!--SEC END -->
<EM>IDX-Tsunami</EM> has several advantages over other injection tools:
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>High performance</EM> and <EM>distributed benchmark</EM>: You
can use IDX-Tsunami to simulate tens of thousands of virtual users.
-<LI><EM>Ease of use</EM>: The hard work is already done for all supported
+<LI CLASS="li-itemize"><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><EM>Multi-protocol support</EM>: <EM>IDX-Tsunami</EM> is for example one of
+<LI CLASS="li-itemize"><EM>Multi-protocol support</EM>: <EM>IDX-Tsunami</EM> is for example one of
the only tool to benchmark SOAP applications
-<LI><EM>Monitoring</EM> of the target server(s) to analyze the behaviour
+<LI CLASS="li-itemize"><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
@@ -303,39 +319,39 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</UL>
<!--TOC section Installation-->
-<H2><A NAME="htoc11">3</A>&nbsp;&nbsp;Installation</H2><!--SEC END -->
+<H2 CLASS="section"><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>
<BR>
<!--TOC subsection Dependencies-->
-<H3><A NAME="htoc12">3.1</A>&nbsp;&nbsp;Dependencies</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc12">3.1</A>&nbsp;&nbsp;Dependencies</H3><!--SEC END -->
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
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>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 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
binaries are provided at
<A HREF="http://tsunami.idealx.org/dist/"><TT>http://tsunami.idealx.org/dist/</TT></A>
- <LI>extended regexp module (used for dynamic variables):
+ <LI CLASS="li-itemize">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>gnuplot and perl5 (optional; for graphical output with
+ <LI CLASS="li-itemize">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>for distributed tests, you need an ssh access to remote
+ <LI CLASS="li-itemize">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>bash
+<LI CLASS="li-itemize">bash
</UL>
<!--TOC subsection Compilation-->
-<H3><A NAME="htoc13">3.2</A>&nbsp;&nbsp;Compilation</H3><!--SEC END -->
+<H3 CLASS="subsection"><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
@@ -350,7 +366,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
./configure
make
make install
@@ -368,9 +384,9 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE></TD>
</TR></TABLE><!--TOC subsection Configuration-->
-<H3><A NAME="htoc14">3.3</A>&nbsp;&nbsp;Configuration</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc14">3.3</A>&nbsp;&nbsp;Configuration</H3><!--SEC END -->
-The main configuration file is <TT>~/.idx-tsunami/idx-tsunami.xml</TT> (
+The default configuration file is <TT>~/.idx-tsunami/idx-tsunami.xml</TT> (
there is a sample file
<TT>/usr/share/doc/idx-tsunami/examples/idx-tsunami.xml</TT>).<BR>
<BR>
@@ -380,7 +396,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection Feedback-->
-<H3><A NAME="htoc15">3.4</A>&nbsp;&nbsp;Feedback</H3><!--SEC END -->
+<H3 CLASS="subsection"><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
@@ -388,34 +404,35 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC section HTTP benchmark approach-->
-<H2><A NAME="htoc16">4</A>&nbsp;&nbsp;HTTP benchmark approach</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc16">4</A>&nbsp;&nbsp;HTTP benchmark approach</H2><!--SEC END -->
-<OL type=1><LI>
-Record scenario: start the recorder with: <TT>idx-tsunami
+<OL CLASS="enumerate" type=1><LI CLASS="li-enumerate">
+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>Edit / organize scenario
-<LI>Write small code for dynamic parts if needed and place dynamic mark-up
-in the scenario
-<LI>Test and adjust scenario to have a nice progression of the load. This
+<LI CLASS="li-enumerate">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
+in the scenario.
+<LI CLASS="li-enumerate">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>Launch benchmark with your first application parameters set-up:
+<LI CLASS="li-enumerate">Launch benchmark with your first application parameters set-up:
<TT>idx-tsunami start</TT>
-<LI>Wait for the end of the test or stop by hand with
+<LI CLASS="li-enumerate">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>Analyse results, change parameters and relaunch another benchmark
+<LI CLASS="li-enumerate">Analyse results, change parameters and relaunch another benchmark
</OL>
<!--TOC subsection benchmarking a HTTP proxy server-->
-<H3><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a HTTP proxy server</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc17">4.1</A>&nbsp;&nbsp;benchmarking a HTTP 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>
@@ -432,7 +449,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;default type="ts_http" name="http_use_server_as_proxy" value="true"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -449,31 +466,31 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC section Jabber benchmark approach-->
-<H2><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc18">5</A>&nbsp;&nbsp;Jabber benchmark approach</H2><!--SEC END -->
This paragraph explain how to write a session for Jabber.<BR>
<BR>
There are two difference between HTTP and Jabber testing:
-<OL type=1><LI>
+<OL CLASS="enumerate" type=1><LI CLASS="li-enumerate">
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>the jabber plugin do not parse XML; instead it use packets
- acknowledgement. The rest of this paragraph will explain this
+<LI CLASS="li-enumerate">the jabber plugin does not parse XML; instead it uses packet
+ acknowledgements. The rest of this paragraph will explain this
feature.
</OL>
Since the jabber plugin do 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 say when a request is
+jabber protocol, you must have a way to tell when a request is
finished. There are 3 possibilities:
-<DL COMPACT=compact><DT>
- <B>ack=local</B><DD> as soon as a packet is received from the server, the
-request is consider over. Hence if you use a local ack with a request
+<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
+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><B>ack=no_ack</B><DD> as soon as the request is send, it is consider over (do
+ <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
not wait for incoming data)
- <DT><B>ack=global</B><DD> synchronized users. its main use is for waiting for all
+ <DT CLASS="dt-description"><B>ack=global</B><DD CLASS="dd-description"> 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>
@@ -489,7 +506,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;request&gt; &lt;jabber type="presence" ack="global"/&gt; &lt;/request&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -519,7 +536,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;default type="ts_jabber" name="global_number" value="100"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -549,7 +566,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;users maxnumber="100" interarrival="1.0" unit="second"&gt;&lt;/users&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -569,11 +586,11 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</DL>
<!--TOC section Understanding idx-tsunami.xml configuration file-->
-<H2><A NAME="htoc19">6</A>&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc19">6</A>&nbsp;&nbsp;Understanding idx-tsunami.xml configuration file</H2><!--SEC END -->
<!--TOC subsection File structure-->
-<H3><A NAME="htoc20">6.1</A>&nbsp;&nbsp;File structure</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc20">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>
@@ -589,7 +606,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -610,7 +627,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection Clients and server-->
-<H3><A NAME="htoc21">6.2</A>&nbsp;&nbsp;Clients and server</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc21">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>
@@ -626,7 +643,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;clients&gt;
&lt;client host="louxor" weight="1" maxusers="500"&gt;
&lt;ip value="10.9.195.12"&gt;&lt;/ip&gt;
@@ -654,18 +671,29 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
Several virtual IP can be used to simulate more machines. This is
very useful when a load-balancer use the client<CODE>'</CODE>s IP to
- distribute the traffic among a cluster of servers. <BR>
+ distribute the traffic among a cluster of servers. <B>New in
+ 1.1.1:</B> IP is not mandatory. If not specified, the default IP will
+ be used.<BR>
<BR>
In this example, a second machine is used in the Tsunami cluster,
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
+ 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
+ of 2, the second one will start twice the number of users as the
+ first (the proportions will be 1/3 and 2/3). In the earlier example
+ where for the second client has 2 CPU and weight=3, the weight is
+ equal to 1.5 for each CPU.<BR>
+<BR>
The server is the entry point into the cluster (Only one server
should be defined).<BR>
<BR>
<!--TOC subsection Monitoring-->
-<H3><A NAME="htoc22">6.3</A>&nbsp;&nbsp;Monitoring</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc22">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
@@ -683,7 +711,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;monitoring&gt;
&lt;monitor host="geronimo" type="erlang"&gt;&lt;/monitor&gt;
&lt;monitor host="bigfoot-1" type="erlang"&gt;&lt;/monitor&gt;
@@ -717,7 +745,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection Defining the load progression-->
-<H3><A NAME="htoc23">6.4</A>&nbsp;&nbsp;Defining the load progression</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc23">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>
@@ -733,7 +761,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;arrivalphase phase="1" duration="10" unit="minute"&gt;
&lt;users interarrival="2" unit="second"&gt; &lt;/users&gt;
&lt;/arrivalphase&gt;
@@ -760,8 +788,8 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
With this setup, during the first 10 minutes of the test, a new user
will be created every 2 seconds, then during the next 10 minutes, a
-new user will be created every seconds, and for the last 10 minutes,
-10 users will be generated every seconds. The test will finish when
+new user will be created every second, and for the last 10 minutes,
+10 users will be generated every second. The test will finish when
all users have ended their session.<BR>
<BR>
The load generated in terms of HTTP requests / seconds will also
@@ -771,7 +799,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection Default values-->
-<H3><A NAME="htoc24">6.5</A>&nbsp;&nbsp;Default values</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc24">6.5</A>&nbsp;&nbsp;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
@@ -789,7 +817,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -808,7 +836,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsubsection Default values: Jabber-->
-<H4><A NAME="htoc25">6.5.1</A>&nbsp;&nbsp;Default values: Jabber</H4><!--SEC END -->
+<H4 CLASS="subsubsection"><A NAME="htoc25">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>
@@ -825,7 +853,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -847,9 +875,17 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
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
+</UL>
<!--TOC subsubsection Default values: HTTP-->
-<H4><A NAME="htoc26">6.5.2</A>&nbsp;&nbsp;Default values: HTTP</H4><!--SEC END -->
+<H4 CLASS="subsubsection"><A NAME="htoc26">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
@@ -867,7 +903,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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
@@ -891,10 +927,14 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection Sessions-->
-<H3><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc27">6.6</A>&nbsp;&nbsp;Sessions</H3><!--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
+Tsunami: GET and POST request, basic authentication, transaction for
+statistics definition, ...<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
CELLSPACING=0>
@@ -908,7 +948,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;session name="http-example" popularity="70" type="ts_http"&gt;
&lt;request&gt; &lt;http url="/" method="GET" version="1.1"&gt;
@@ -961,9 +1001,15 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
to decide which session a new user will execute. The sum of all
session<CODE>'</CODE>s popularity must be 100. <BR>
<BR>
-This example show several features of the HTTP protocol support in
-Tsunami: GET and POST request, basic authentication, transaction for
-statistics definition, ...<BR>
+A transaction is just a way to have customized statistics. Say if you
+want to know the response time of the login page of your website, you
+just have to put all the requests of this page (HTML + embedded
+pictures) within a transaction. In the example above, the transaction
+called <TT>index_request</TT> will gives you in the
+statistics/reports the mean response time to get
+<FONT COLOR=purple>index.en.html + header.gif</FONT>. Be warn that If you have a
+thinktime inside the transaction, the thinktime will be part of the
+response time.<BR>
<BR>
<A NAME="sec:sessions:jabber"></A>
<BR>
@@ -982,7 +1028,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -1034,7 +1080,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection Dynamic substitutions-->
-<H3><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc28">6.7</A>&nbsp;&nbsp;Dynamic substitutions</H3><!--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
@@ -1045,7 +1091,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
Substitutions are executed on a request-by-request basis, only if the
request tag has the attribute <FONT COLOR=purple>subst="true"</FONT>.<BR>
<BR>
-When a substitution is asked, the substitution mark-up is replaced by
+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
id of the current virtual user and DynData the list of all Dynamic
@@ -1066,7 +1112,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -1099,7 +1145,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
-module(symbol).
-export([new/1]).
@@ -1139,7 +1185,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -1160,11 +1206,12 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsubsection Reading external file-->
-<H4><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external file</H4><!--SEC END -->
+<H4 CLASS="subsubsection"><A NAME="htoc29">6.7.1</A>&nbsp;&nbsp;Reading external file</H4><!--SEC END -->
-<B>New in 1.0.3</B>: A new experimental module ts_file_server is available. You
+<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.<BR>
+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:
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
@@ -1180,7 +1227,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;default name="file_server" value="/tmp/userlist.csv"&gt;&lt;/default&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -1209,7 +1256,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
-module(readcsv).
-export([user/1]).
@@ -1244,7 +1291,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -1263,12 +1310,14 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
-Two functions are available: <TT>ts_file_server:get_next_line</TT> and
-<TT>ts_file_server:get_random_line</TT><BR>
+Two functions are available: <TT>ts_file_server:get_next_line</TT>
+and <TT>ts_file_server:get_random_line</TT>. For the
+<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-->
-<H3><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc30">6.8</A>&nbsp;&nbsp;Dynamic variables</H3><!--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
@@ -1290,7 +1339,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;form action="go.cgi" method="POST"&gt;
&lt;hidden name="random_num" value="42"&gt;&lt;/form&gt;
&lt;/form&gt;
@@ -1320,7 +1369,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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;
@@ -1355,7 +1404,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&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'
@@ -1389,7 +1438,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;request&gt;
&lt;http url="/testtsunami.html" method="GET" version="1.0"&gt;&lt;/http&gt;
&lt;dyn_variable name="mytitlevar"
@@ -1410,7 +1459,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection Checking the server's response-->
-<H3><A NAME="htoc31">6.9</A>&nbsp;&nbsp;Checking the server's response</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc31">6.9</A>&nbsp;&nbsp;Checking the server's response</H3><!--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
@@ -1433,7 +1482,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;request match="Welcome !"&gt;
&lt;http url='/login.php' version='1.0' method='POST'
contents='username=nic&amp;amp;user_password=sesame'
@@ -1454,27 +1503,55 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC section Statistics and reports-->
-<H2><A NAME="htoc32">7</A>&nbsp;&nbsp;Statistics and reports</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc32">7</A>&nbsp;&nbsp;Statistics and reports</H2><!--SEC END -->
<A NAME="sec:statistics-reports"></A>
Available stats:
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
request (response time for each request)
-<LI>page (response time for each set of requests)
-<LI>connect (duration of the connection)
-<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
+<LI CLASS="li-itemize">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
</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>
+<BR>
HTTP specific stats:
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
counter for each response status (200, 404, etc.)
</UL>
+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">
+<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
+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">
+<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
+estimated bandwidth usage).
+</UL>
<!--TOC subsection Generating the report-->
-<H3><A NAME="htoc33">7.1</A>&nbsp;&nbsp;Generating the report</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc33">7.1</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
@@ -1492,7 +1569,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
/usr/lib/idx-tsunami/bin/analyse_msg.pl --stats idx-tsunami.log --html --extra --plot
</PRE></TD>
</TR></TABLE></TD>
@@ -1509,46 +1586,50 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection Tsunami summary-->
-<H3><A NAME="htoc34">7.2</A>&nbsp;&nbsp;Tsunami summary</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc34">7.2</A>&nbsp;&nbsp;Tsunami summary</H3><!--SEC END -->
-<BLOCKQUOTE><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
- <DIV ALIGN=center>
+<BLOCKQUOTE CLASS="figure"><DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV>
+ <DIV CLASS="center">
<IMG SRC="images/tsunami-report.png" ALT="images/tsunami-report.png">
</DIV>
<BR>
-<DIV ALIGN=center>Figure 1: Report</DIV><BR>
+<BR>
+<DIV CLASS="center">Figure 1: Report</DIV><BR>
+<BR>
<A NAME="fig:report"></A>
-<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
+<DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
<!--TOC subsection Graphical overview-->
-<H3><A NAME="htoc35">7.3</A>&nbsp;&nbsp;Graphical overview</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc35">7.3</A>&nbsp;&nbsp;Graphical overview</H3><!--SEC END -->
-<BLOCKQUOTE><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
- <DIV ALIGN=center>
+<BLOCKQUOTE CLASS="figure"><DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV>
+ <DIV CLASS="center">
<IMG SRC="images/tsunami-graph.png" ALT="images/tsunami-graph.png">
</DIV>
<BR>
-<DIV ALIGN=center>Figure 2: Graphical output</DIV><BR>
+<BR>
+<DIV CLASS="center">Figure 2: Graphical output</DIV><BR>
+<BR>
<A NAME="fig:graph"></A>
-<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
+<DIV CLASS="center"><HR WIDTH="80%" SIZE=2></DIV></BLOCKQUOTE>
<!--TOC section References-->
-<H2><A NAME="htoc36">8</A>&nbsp;&nbsp;References</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc36">8</A>&nbsp;&nbsp;References</H2><!--SEC END -->
-<UL><LI>
+<UL CLASS="itemize"><LI CLASS="li-itemize">
<EM>IDX-Tsunami</EM> home page: <A HREF="http://tsunami.idealx.org/"><TT>http://tsunami.idealx.org/</TT></A>
-<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
+<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
<SUP><A NAME="text2" HREF="#note2">2</A></SUP>
-<LI><EM>Making reliable system in presence of software errors</EM>, Doctoral Thesis,
+<LI CLASS="li-itemize"><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><A NAME="htoc37">9</A>&nbsp;&nbsp;Acknowledgments</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc37">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
@@ -1557,11 +1638,11 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC section Frequently Asked Questions-->
-<H2><A NAME="htoc38">A</A>&nbsp;&nbsp;Frequently Asked Questions</H2><!--SEC END -->
+<H2 CLASS="section"><A NAME="htoc38">A</A>&nbsp;&nbsp;Frequently Asked Questions</H2><!--SEC END -->
<!--TOC subsection IDX-tsunami crash when I start it -->
-<H3><A NAME="htoc39">A.1</A>&nbsp;&nbsp;IDX-tsunami crash when I start it </H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc39">A.1</A>&nbsp;&nbsp;IDX-tsunami crash when I start it </H3><!--SEC END -->
Does your Erlang system has ssl support enabled ?<BR>
<BR>
@@ -1579,7 +1660,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&gt; erl
Eshell V5.2 (abort with ^G)
1&gt; ssl:start()
@@ -1599,7 +1680,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE><BR>
<!--TOC subsection IDX-tsunami still doesn't start ...-->
-<H3><A NAME="htoc40">A.2</A>&nbsp;&nbsp;IDX-tsunami still doesn't start ...</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc40">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
@@ -1617,7 +1698,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
===============================================
=ERROR REPORT==== 4-May-2004::22:38:26 ===
** Generic server ts_config_server terminating
@@ -1693,6 +1774,39 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
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:
+<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 CLASS="verbatim">
+&gt;erl -rsh ssh -sname foo -setcookie mycookie
+
+Eshell V5.4.3 (abort with ^G)
+(foo@myhostname)1&gt;slave:start(remotehost,bar,"-setcookie mycookie").
+{ok,bar@remotehost}
+</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>
Note that you do not need to use the 127.0.0.1 address in the config 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>
@@ -1713,7 +1827,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
&lt;client host="mymachine" use_controller_vm="true"&gt;
</PRE></TD>
</TR></TABLE></TD>
@@ -1728,14 +1842,33 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE></TD>
</TR></TABLE></TD>
</TR></TABLE><BR>
+You may also have problems due to the sshd configuration:<BR>
+<BR>
+For example, for SuSE 9.2 sshd is compiled with restricted set of
+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>
+<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
+to the erlang executable (thanks to Gordon Guthrie for reporting this).<BR>
+<BR>
<!--TOC subsection IDX-tsunami still crash/fails when I start it !-->
-<H3><A NAME="htoc41">A.3</A>&nbsp;&nbsp;IDX-tsunami still crash/fails when I start it !</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc41">A.3</A>&nbsp;&nbsp;IDX-tsunami still crash/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
if there is a problem. <BR>
<BR>
+If the file is not created and a crashed dump file is present, maybe
+you are using a binary installation of tsunami not compatible with the
+version of erlang you used.<BR>
+<BR>
If you see nothing wrong, you can compile <EM>idx-tsunami</EM> with full
debugging: recompile with <TT>make debug</TT> , and
don't forget to set the loglevel to "debug" in the XML file.<BR>
@@ -1747,7 +1880,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
Erlang.
<!--TOC subsection What is the format of the stats file idx-tsunami.log ?-->
-<H3><A NAME="htoc42">A.4</A>&nbsp;&nbsp;What is the format of the stats file idx-tsunami.log ?</H3><!--SEC END -->
+<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 -->
<BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD><TABLE BORDER=0 CELLPADDING=0
@@ -1762,7 +1895,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
# stats: dump at 1083694995
stats: users 11 11
stats: request 41 1.03289 0.125108 1.59802 0.901978
@@ -1806,7 +1939,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection How can i specify the number of concurrent users ?-->
-<H3><A NAME="htoc43">A.5</A>&nbsp;&nbsp;How can i specify the number of concurrent users ?</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc43">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
@@ -1822,7 +1955,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<BR>
<!--TOC subsection SNMP monitoring doesn't work ?!-->
-<H3><A NAME="htoc44">A.6</A>&nbsp;&nbsp;SNMP monitoring doesn't work ?!</H3><!--SEC END -->
+<H3 CLASS="subsection"><A NAME="htoc44">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>
@@ -1843,7 +1976,7 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TD>
</TR></TABLE></TD>
<TD><TABLE BORDER=0 CELLPADDING="1" CELLSPACING=0>
-<TR><TD><PRE>
+<TR><TD><PRE CLASS="verbatim">
--- 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 @@
@@ -1871,10 +2004,10 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
</TR></TABLE></TD>
</TR></TABLE><BR>
<!--BEGIN NOTES document-->
-<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>
+<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>
</DL>
<!--END NOTES-->
<!--HTMLFOOT-->
@@ -1888,9 +2021,6 @@ <H1 ALIGN=center>IDX-Tsunami User's manual</H1>
<!--ENDHTML-->
<!--FOOTER-->
-<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>
+<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>
</HTML>
Please sign in to comment.
Something went wrong with that request. Please try again.