Tsung

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 10. srpna 2015; kontroly vyžadují 3 úpravy .
Tsung
Typ Nástroj pro zátěžové testování
Vývojář Nicolas Nicklausse
Zapsáno v Erlang [1]
Rozhraní příkazový řádek
Operační systém Linux , UNIX
Nejnovější verze
Licence GNU GPL 2
webová stránka tsung.erlang-projects.org

Tsung (z anglického  Tsunami-Next Generation [3] , dříve známý jako IDX-Tsunami ) je distribuovaný systém zátěžového a zátěžového testování napsaný v jazyce Erlang . Vývoj systému zahájil Nicolas Niclauss e v roce 2001. Zpočátku se jednalo o distribuovaný systém pro zátěžové testování jabber pro interní potřeby IDEALX (nyní OpenTrust ). O několik měsíců později se projekt vyvinul v open source multiprotokolový nástroj pro zátěžové testování. Podpora HTTP byla přidána v roce 2003.

Tsung lze použít k testování různých HTTP protokolů (včetně SOAP ), WebDAV , Jabber , LDAP , ale i PostgreSQL a MySQL , a také umožňuje emulovat cluster z klientských strojů [4] .

Funkce

Pro protokol HTTP systém umožňuje:

V rámci protokolu Jabber/XMPP lze testovat autentizační zprávy , registraci přítomnosti, chatové zprávy, práci se seznamem uživatelů, místnostmi a nastavení synchronizace uživatelů .

Struktura

Konfigurační soubor Tsung  je soubor XML . Hlavní tag je tag <tsung>, který uzavírá celou konfiguraci. Značka má dvě vlastnosti: loglevel a dumptraffic . loglevel řídí upovídanost protokolu, zatímco dumtraffic se používá k ladění. Volba dumptraffic=true vytvoří soubor protokolu dump.log , který obsahuje podrobnosti o každé odpovědi ze serveru. V nejnovější verzi Tsung jsou možnosti dumptrafic=light  – prvních 44 bajtů odpovědi serveru a dumptrafic=protocol  – pouze následující data date;pid;id;http metoda;hostitel;URL;stav HTTP;velikost;shoda ;chyba .

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

Klienti a servery

Při testování můžete použít více virtuálních IP adres, což je mimořádně užitečné, když nástroj pro vyrovnávání zatížení na serveru používá síťovou adresu klienta k distribuci síťového provozu v clusteru serverů.

<clients> <client host= "test1" weight= "1" maxusers= "500" > <ip value= "10.0.2.3" /> <ip value= "10.0.2.4" /> </client> <klientský hostitel = "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 může provozovat více jader – pro klienty Tsung je efektivnější používat jeden VM na jádro. Parametr cpu se musí rovnat počtu jader na uzlech.

V tomto příkladu je druhý stroj použit v clusteru Tsung s velkou „hmotností“ a dvěma jádry. Ve výchozím nastavení je zatížení rovnoměrně rozloženo mezi všechna jádra (standardně jedno jádro na klienta). Parametr váha (celé číslo) lze použít k nastavení priority klientského počítače. Konkrétně, pokud má jeden klient váhu 1 a druhý má váhu 2, druhý spustí dvakrát tolik uživatelů než první (poměry budou 1/3 a 2/3). Ve výše uvedeném příkladu, kde má druhý klient cpu=2 a váhu=3 , je váha pro každé jádro 1,5.

Monitoring

Tsung podporuje několik možností monitorování: nativní monitorovací agent na Erlang , Munin nebo SNMP . Agent musí být nainstalován na straně serveru [5] . Pokud je zatížení vytvořeno pro serverový cluster, můžete pro různé servery použít různé agenty.

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

Fáze zatížení

Zátěž lze rozdělit do několika fází. V nastavení můžete nastavit dobu trvání každé fáze a sled fází. V každé fázi můžete nastavit počet souběžných uživatelů dvěma způsoby: nastavit počet uživatelů za časové období, například 100 uživatelů za sekundu, nebo nastavit frekvenci vytváření uživatelů, například jeden uživatel každých 0,01 sekundy. Ve stabilní zátěži můžete vložit určitou relaci v určitou dobu, abyste simulovali nějaký druh kontroly nebo spustili nějakou službu.

<load> <příjezdová fáze= "1" trvání= "10" jednotka= "minuta" > <!-- Zahřívací fáze --> <users interarrival= "0,1" jednotka= "sekunda" > </users> < /arrivalphase > <arrivalphase phase= "2" Duration = "60" unit= "minute" > <!-- Load phase --> <users comingrate= "1000" unit= "second" > </users> </arrivalphase > < !-- Special Sessions --> <user session= "addManyProducts" start_time= "20" unit= "minute" /> <user session= "checkOrders" start_time= "25" unit= "minute" /> </ zatížení>

Uživatelští agenti

Následující příklad konfigurace nastavuje procento uživatelských agentů pro simulaci různých prohlížečů . Toto procento určuje pravděpodobnost přiřazení uživatelské relace jednomu ze zadaných agentů (výchozí hodnota je přiřazena - tsung ):

<option type= "ts_http" name= "user_agent" > <user_agent pravděpodobnost= "60" > Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 </user_agent> <user_agent pravděpodobnost= "20" > Mozilla/5.0 (kompatibilní; 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 pravděpodobnost= "20" > Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, jako Gecko) Chrome/19.0.1042.0 Safari/535.21 </user_agent> </option>

Poznámky

  1. Projekt tsung Open Source na Open Hub: Stránka jazyků - 2006.
  2. Vydání 1.7.0 – 2017.
  3. Nicolas Niclausse. Tsung verze 1.2.0 k dispozici (nedostupný odkaz) . Získáno 30. 5. 2016. Archivováno z originálu 4. 3. 2016. 
  4. 12 Holt , 2011 .
  5. Holt, 2011 , str. 54.

Literatura

  • Bradley Holt. Kapitola 6. Distribuované zátěžové testování // Škálování CouchDB. - O'Reilly Media, Inc., 2011. - 72 s. — ISBN 978-1-4493-0343-3 .

Odkazy