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] .
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 .
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>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.
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>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>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>