Tsung | |
---|---|
Típusú | Terhelésvizsgáló eszköz |
Fejlesztő | Nicolas Nicklausse |
Beírva | Erlang [1] |
Felület | parancs sor |
Operációs rendszer | Linux , UNIX |
legújabb verzió |
|
Engedély | GNU GPL 2 |
Weboldal | tsung.erlang-projects.org |
A Tsung (az angol Tsunami-Next Generation [3] szóból , korábban IDX-Tsunami néven) egy erlang nyelven írt elosztott terhelés- és stressz-tesztelő rendszer . A rendszer fejlesztését Nicolas Niclauss e kezdte 2001-ben. Kezdetben ez egy elosztott rendszer volt az IDEALX (ma OpenTrust ) belső szükségleteinek kielégítésére . Néhány hónappal később a projekt nyílt forráskódú , többprotokollú terhelési tesztelési eszközzé fejlődött. A HTTP támogatást 2003-ban adták hozzá.
A Tsung segítségével különféle HTTP-protokollok (köztük SOAP ), WebDAV , Jabber , LDAP , valamint PostgreSQL és MySQL tesztelhetők , és lehetővé teszi egy fürt emulálását is kliensgépekről [4] .
A HTTP protokoll esetén a rendszer lehetővé teszi:
A Jabber/XMPP protokollon belül tesztelhetők a hitelesítési üzenetek , a jelenlét-regisztráció, a chat-üzenetek, a felhasználói listával való munka, a szobák és a felhasználói szinkronizálási beállítások .
A Tsung konfigurációs fájl egy XML - fájl. A fő címke az a címke <tsung>, amely a teljes konfigurációt tartalmazza. A címkének két tulajdonsága van: loglevel és dumptraffic . A loglevel a napló részletességét szabályozza, míg a dumtraffic a hibakeresésre szolgál. A dumptraffic=true beállítás létrehoz egy dump.log naplófájlt , amely részletezi a kiszolgáló minden egyes válaszát. A Tsung legújabb verziójában a dumptrafic=light – a szerver válasz első 44 bájtja és a dumptrafic=protocol – opciók állnak rendelkezésre – csak a következő adatdátum ;pid;id;http-metódus;host;URL;HTTP status;size;match ;hiba .
<?xml version="1.0"?> <tsung loglevel= "info" dumptraffic= "false" > ... </tsung>Teszteléskor több virtuális IP-címet is használhat, ami rendkívül hasznos, ha a szerver terheléselosztója az ügyfél hálózati címét használja a hálózati forgalom elosztására egy szerverfürtben.
<clients> <client host= "test1" weight= "1" maxusers= "500" > <ip value= "10.0.2.3" /> <ip value= "10.0.2.4" /> </client> <kliens gazdagép = "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" />Az Erlang virtuális gép több magot is futtathat – a Tsung ügyfelek számára hatékonyabb, ha magonként egy virtuális gépet használnak. A cpu paraméternek meg kell egyeznie a csomópontokon lévő magok számával.
Ebben a példában a második gépet egy nagy "súllyal" és két maggal rendelkező Tsung-fürtben használják. Alapértelmezés szerint a terhelés egyenletesen oszlik el az összes mag között (alapértelmezés szerint kliensenként egy mag). A súly (egész) paraméter segítségével beállítható a kliens gép prioritása. Különösen, ha az egyik ügyfél súlya 1, a másik pedig 2, a második kétszer annyi felhasználót indít, mint az első (az arányok 1/3 és 2/3 lesznek). A fenti példában, ahol a második kliens cpu=2 és weight=3 értékkel rendelkezik, minden mag súlya 1,5.
A Tsung számos megfigyelési lehetőséget támogat: natív megfigyelési ügynök az Erlang -on , a Munin -on vagy az SNMP -n . Az ügynököt a szerver oldalon kell telepíteni [5] . Ha a terhelést egy kiszolgálófürthöz hozzák létre, különböző ügynököket használhat a különböző kiszolgálókhoz.
<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>A terhelés több fázisra osztható. A beállításokban beállíthatja az egyes fázisok időtartamát és a fázisok sorrendjét. Mindegyik fázisban kétféleképpen állíthatja be az egyidejű felhasználók számát: állítsa be a felhasználók számát időszakonként, például 100 felhasználót másodpercenként, vagy állítsa be a felhasználó létrehozásának gyakoriságát, például egy felhasználót 0,01 másodpercenként. Stabil terhelés esetén beszúrhat egy adott munkamenetet egy bizonyos időpontban, hogy szimuláljon valamilyen ellenőrzést vagy elindítson valamilyen szolgáltatást.
<load> <arrivalphase phase= "1" duration= "10" unit= "minute" > <!-- Bemelegítési fázis --> <users interarrival= "0.1" unit= "second" > </users> < /arrivalphase > <arrivalphase phase= "2" duration= "60" unit= "minute" > <!-- Betöltési fázis --> <felhasználók érkezési sebessége= "1000" unit= "second" > </users> </arrivalphase > < !-- Special Sessions --> <user session= "addManyProducts" start_time = "20" unit= "minute" /> <user session= "checkOrders" start_time = "25" unit= "minute" /> </ terhelés>A következő konfigurációs példa a felhasználói ügynökök százalékos arányát állítja be a különböző böngészők szimulálásához . Ez a százalék határozza meg annak valószínűségét, hogy egy felhasználói munkamenetet a megadott ügynökök egyikéhez rendeljenek (az alapértelmezett hozzárendelés - 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 (kompatibilis; 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, mint a Gecko) Chrome/19.0.1042.0 Safari/535.21 </user_agent> </option>