Tsung

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 10 augusti 2015; kontroller kräver 3 redigeringar .
Tsung
Sorts Ladda testverktyg
Utvecklaren Nicolas Nicklausse
Skrivet i Erlang [1]
Gränssnitt kommandorad
Operativ system Linux , UNIX
senaste versionen
Licens GNU GPL 2
Hemsida tsung.erlang-projects.org

Tsung (från engelska  Tsunami-Next Generation [3] , tidigare känd som IDX-Tsunami ) är ett distribuerat belastnings- och stresstestsystem skrivet på språket Erlang . Utvecklingen av systemet startades av Nicolas Niclauss e 2001. Ursprungligen var det ett distribuerat system för belastningstestning av jabber för de interna behoven hos IDEALX (nu OpenTrust ). Några månader senare utvecklades projektet till ett multiprotokollverktyg med öppen källkod för belastningstestning. HTTP- stöd lades till 2003.

Tsung kan användas för att testa olika HTTP-protokoll (inklusive SOAP ), WebDAV , Jabber , LDAP , samt PostgreSQL och MySQL , och gör det även möjligt att emulera ett kluster från klientmaskiner [4] .

Funktioner

För HTTP-protokollet tillåter systemet:

Inom Jabber/XMPP-protokollet kan autentiseringsmeddelanden , närvaroregistrering, chattmeddelanden, arbete med användarlistan, rum och användarsynkroniseringsinställningar testas .

Struktur

Tsung - konfigurationsfilen  är en XML -fil. Huvudtaggen är taggen <tsung>som omsluter hela konfigurationen. Taggen har två egenskaper: loglevel och dumptraffic . loglevel kontrollerar loggens utförlighet, medan dumtraffic används för felsökning. Alternativet dumptraffic=true skapar en dump.log -loggfil som beskriver varje svar från servern. I den senaste versionen av Tsung finns alternativen dumptrafic=light  - de första 44 byten av serversvaret och dumptrafic=protocol  - endast följande datadatum;pid;id;http method;host;URL;HTTP status;size;match ;fel .

<?xml version="1.0"?> <tsung loglevel= "info" dumptraffic= "false" > ... </tsung>

Klienter och servrar

När du testar kan du använda flera virtuella IP-adresser, vilket är extremt användbart när belastningsutjämnaren på servern använder nätverksadressen till klienten för att distribuera nätverkstrafik i ett serverkluster.

<clients> <client host= "test1" weight= "1" maxusers= "500" > <ip value= "10.0.2.3" /> <ip value= "10.0.2.4" /> </client> <client host = "test2" weight= "3" maxusers= "250" cpu= "2" > <ip value= "10.1.2.5" /> </client> </clients> <server host= "10.2.2.10" port= "8081" type= "tcp" />

Erlang VM kan köra flera kärnor - det är mer effektivt för Tsung-klienter att använda en virtuell dator per kärna. CPU -parametern måste vara lika med antalet kärnor på noderna.

I det här exemplet används den andra maskinen i ett Tsung-kluster med en stor "vikt" och två kärnor. Som standard är belastningen jämnt fördelad över alla kärnor (en kärna per klient som standard). Parametern vikt (heltal) kan användas för att ställa in klientmaskinens prioritet. I synnerhet, om en klient har vikten 1 och en annan har vikten 2, kommer den andra att starta dubbelt så många användare som den första (proportionerna kommer att vara 1/3 och 2/3). I exemplet ovan, där den andra klienten har cpu=2 och vikt=3 , är vikten 1,5 för varje kärna.

Övervakning

Tsung stöder flera övervakningsalternativ: inbyggd övervakningsagent på Erlang , Munin eller SNMP . Agenten måste installeras på serversidan [5] . Om belastningen skapas för ett serverkluster kan du använda olika agenter för olika servrar.

<monitoring> <monitor host= "10.1.1.94" type= "erlang" /> <monitor host= "10.1.1.94" type= "munin" > <munin port= "8081" /> </monitor> <monitor host = "10.1.1.94" type= "snmp" > <snmp version= "v2" community= "rwCommunity" port= "11161" /> </monitor> </monitoring>

Ladda faser

Lasten kan delas upp i flera faser. I inställningarna kan du ställa in varaktigheten för varje fas och sekvensen av faser. I varje fas kan du ställa in antalet samtidiga användare på två sätt: ställ in antalet användare per tidsperiod, till exempel 100 användare per sekund, eller ställ in hur ofta användaren skapas, till exempel en användare var 0,01:e sekund. I en stabil belastning kan du infoga en specifik session vid en viss tidpunkt för att simulera någon form av kontroll eller starta någon tjänst.

<load> <arrivalphase phase= "1" duration= "10" unit= "minute" > <!-- Uppvärmningsfas --> < users interarrival= "0.1" unit= "second" > </users> < /arrivalphase > <arrivalphase phase= "2" duration= "60" unit= "minute" > <!-- Lastfas --> < users arrivalrate= "1000" unit= "second" > </users> </arrivalphase > < !-- Special Sessions --> <user session= "addManyProducts" start_time= "20" unit= "minute" /> <user session= "checkOrders" start_time= "25" unit= "minute" /> </ ladda>

Användaragenter

Följande konfigurationsexempel ställer in en procentandel av användaragenter för att simulera olika webbläsare . Denna procentsats bestämmer sannolikheten för att tilldela en användarsession till en av de angivna agenterna (standard är tilldelad - tsung ):

<option type= "ts_http" name= "user_agent" > <user_agent probability= "60" > Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 </user_agent> <user_agent probability= "20" > Mozilla/5.0 (kompatibel; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30) </user_agent> <user_agent probability= "20" > Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, som Gecko) Chrome/19.0.1042.0 Safari/535.21 </user_agent> </option>

Anteckningar

  1. Tsung Open Source Project på Open Hub: Languages-sidan - 2006.
  2. Utgåva 1.7.0 - 2017.
  3. Nicolas Niclausse. Tsung version 1.2.0 tillgänglig (inte tillgänglig länk) . Hämtad 30 maj 2016. Arkiverad från originalet 4 mars 2016. 
  4. 12 Holt , 2011 .
  5. Holt, 2011 , sid. 54.

Litteratur

  • Bradley Holt. Kapitel 6. Distribuerad belastningstestning // Skalning av CouchDB. - O'Reilly Media, Inc., 2011. - 72 sid. — ISBN 978-1-4493-0343-3 .

Länkar