Tsung | |
---|---|
Tyyppi | Kuormitustestaustyökalu |
Kehittäjä | Nicolas Nicklausse |
Sisään kirjoitettu | Erlang [1] |
Käyttöliittymä | komentorivi |
Käyttöjärjestelmä | Linux , UNIX |
uusin versio |
|
Lisenssi | GNU GPL 2 |
Verkkosivusto | tsung.erlang-projects.org |
Tsung ( englanninkielisestä Tsunami-Next Generation [3] , joka tunnettiin aiemmin nimellä IDX-Tsunami ) on hajautettu kuormitus- ja stressitestausjärjestelmä , joka on kirjoitettu erlang -kielellä . Järjestelmän kehittämisen aloitti Nicolas Niclauss e vuonna 2001. Alun perin se oli hajautettu järjestelmä kuormitustestaukseen IDEALXin (nykyisin OpenTrust ) sisäisiin tarpeisiin . Muutamaa kuukautta myöhemmin projekti kehittyi avoimen lähdekoodin moniprotokollatyökaluksi kuormitustestausta varten. HTTP - tuki lisättiin vuonna 2003.
Tsungilla voidaan testata erilaisia HTTP-protokollia (mukaan lukien SOAP ), WebDAV , Jabber , LDAP sekä PostgreSQL ja MySQL , ja se mahdollistaa myös klusterin emuloinnin asiakaskoneista [4] .
HTTP - protokollalle järjestelmä sallii:
Jabber /XMPP-protokollassa voidaan testata todennusviestejä , läsnäolorekisteröintiä, chat-viestejä, työskentelyä käyttäjäluettelon kanssa, huoneita ja käyttäjien synkronointiasetuksia .
Tsung - määritystiedosto on XML - tiedosto. Päätunniste on tunniste <tsung>, joka sisältää koko määrityksen. Tunnisteella on kaksi ominaisuutta: loglevel ja dumptraffic . loglevel ohjaa lokin monisanaisuutta, kun taas dumtrafficia käytetään virheenkorjaukseen. Vaihtoehto dumptraffic=true luo dump.log- lokitiedoston , joka sisältää yksityiskohtaiset tiedot kunkin palvelimen vastauksesta. Tsungin uusimmassa versiossa on vaihtoehdot dumptrafic=light - palvelimen vastauksen ensimmäiset 44 tavua ja dumptrafic=protocol - vain seuraava datapäivä ;pid;id;http-menetelmä;isäntä;URL;HTTP status;size;match ;error .
<?xml version="1.0"?> < tsung loglevel= "info" dumptraffic= "false" > ... </tsung>Testattaessa voit käyttää useita virtuaalisia IP-osoitteita, mikä on erittäin hyödyllistä, kun palvelimen kuormituksen tasapainotin käyttää asiakkaan verkko-osoitetta verkkoliikenteen jakamiseen palvelinklusterissa.
<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 voi käyttää useita ytimiä – Tsung-asiakkaiden on tehokkaampaa käyttää yhtä VM:tä ydintä kohti. Cpu - parametrin on oltava yhtä suuri kuin solmujen ytimien lukumäärä.
Tässä esimerkissä toista konetta käytetään Tsung-klusterissa, jossa on suuri "paino" ja kaksi ydintä. Oletusarvon mukaan kuorma jakautuu tasaisesti kaikille ytimille (oletusarvoisesti yksi ydin asiakasta kohti). Paino ( kokonaisluku) -parametrilla voidaan asettaa asiakaskoneen prioriteetti. Erityisesti, jos yhden asiakkaan paino on 1 ja toisen paino 2, toinen käynnistää kaksi kertaa enemmän käyttäjiä kuin ensimmäinen (suhteet ovat 1/3 ja 2/3). Yllä olevassa esimerkissä, jossa toisen asiakkaan cpu=2 ja weight=3 , paino on 1,5 jokaiselle ytimelle.
Tsung tukee useita valvontavaihtoehtoja: natiivi valvontaagentti Erlangissa , Muninissa tai SNMP :ssä . Agentti on asennettava palvelinpuolelle [5] . Jos kuorma on luotu palvelinklusterille, voit käyttää eri agentteja eri palvelimille.
<monitoring> <monitor host= "10.1.1.94" type= "erlang" /> <monitor host= "10.1.1.94" type= "munin" > <munin port= "8081" /> </monitor> <monitorin isäntä = "10.1.1.94" type= "snmp" > <snmp version= "v2" Community= "rwCommunity" port= "11161" /> </monitor> </monitoring>Kuorma voidaan jakaa useisiin vaiheisiin. Asetuksissa voit asettaa kunkin vaiheen keston ja vaiheiden järjestyksen. Kussakin vaiheessa voit asettaa samanaikaisten käyttäjien määrän kahdella tavalla: asettaa käyttäjien määrän ajanjaksoa kohti, esimerkiksi 100 käyttäjää sekunnissa, tai määrittää käyttäjien luontitiheyden, kuten yksi käyttäjä 0,01 sekunnin välein. Vakaassa kuormassa voit lisätä tietyn istunnon tiettyyn aikaan simuloidaksesi jonkinlaista tarkistusta tai käynnistääksesi jonkin palvelun.
<load> <saapumisvaihe = "1" kesto= "10" unit= "minuutti" > <!-- Lämpenemisvaihe --> <käyttäjien välinen saapuminen= "0.1" unit= "sekunti" > </users> < /arrivalphase > <arrivalphase phase= "2" duration= "60" unit= "minute" > <!-- Latausvaihe --> <käyttäjien saapumisnopeus= "1000" unit= "second" > </users> </arrivalphase > < !-- Special Sessions --> <user session= "addManyProducts" start_time= "20" unit= "minute" /> <user session= "checkOrders" start_time= "25" unit= "minute" /> </ kuorma>Seuraavassa kokoonpanoesimerkissä määritetään käyttäjäagenttien prosenttiosuus eri selaimien simuloimiseksi . Tämä prosenttiosuus määrittää todennäköisyyden määrittää käyttäjäistunto jollekin määritetyistä agenteista (oletusarvo on määritetty - tsung ):
< optiotyyppi = "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 (yhteensopiva; 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, kuten Gecko) Chrome/19.0.1042.0 Safari/535.21 </user_agent> </option>