Lasttester i molnet–Ett riktigt test

Özgür Bal Okategoriserade Leave a Comment

ApicaLogoRGBI våra tidigare artiklar om Apica har vi pratat om kontrollpanelen och hur lätt det är att lasttesta mot en server. Idag kommer vi att köra riktiga tester mot tre webbservrar i olika situationer. Vi tar upp ett enkelt exempel för att visa tillvägagångssättet och hoppas att denna artikel kan vara användbar som utgångspunkt när du börjar köra dina egna tester.

Inledning

Syftet med det här testet är att visa hur du kan utföra organiserade tester mot olika servrar på liknande villkor. Resultaten bör ge oss en ungefärlig uppfattning om hur tre kända webbservrar presterar under två olika och mycket enkla situationer. Våra tester bör inte ses som ett riktigt riktmärke utan ska snarare ge dig en uppfattning om hur du kan  hantera vissa situationer. Riktiga tester är ofta mer komplexa och har olika variabler som är starkt beroende av hur en webbplats eller applikation är byggd. De resultat vi får fram är bara ett exempel och du bör och kan använda andra variabler som är viktiga för just din webbplats.

Fördelarna med cloud computing

Att göra tester mot olika hårdvara var för bara några år sedan ett tidsödande arbete. Alla hade inte en mängd olika servrar att testa mot. Man behövde vara försiktig när man valde ut de fysiska delarna man skulle testa, montera ihop servrarna, sätta upp dem i privata nätverk eller datacenter och all annan hantering som fysisk hårdvara medför.

Tester mot olika hårdvara är förstås ett krav om ditt företag fokuserar på just hårdvara. Men om du har ett företag som fokuserar på programvara vill du troligen lägga din tid på ditt system och inte på hårdvara. Naturligtvis kör mjukvara på hårdvara så det har hittills inte varit något du bara kan strunta i. Tills alldeles nyligen.

Med en tjänst som City Cloud kan du snabbt sätta igång några servrar och sedan radera dem när du är klar. Det är ett ypperligt verktyg att göra alla typer av mjukvarutest på och du kan skala dem på både höjden (mer kraft) och på bredden (fler instanser) oavsett system. Det bästa av allt är att när du är klar, så tar du bara bort dem och kostnaderna reduceras till noll. Förr i världen skulle det sluta med att dina fysiska servrar bara gick på tomgång och kostade pengar.

Vår testmiljö

För att ha någon form av referenspunkt, behöver vi en uppsättning av standard parametrar och servrar för att mäta dem emot.

I det här fallet tog vi tre webbservrar eftersom de är en av de vanligaste applikationerna idag. Vi valde Apache 2 (prefork multiprocess modul), Nginx och lighttpd. Apache 2 är välkänd och full av moduler för alla typer av funktionalitet. Lighttp är mer lättviktig, stöder PHP och en massa andra funktioner, men används oftast för statiskt innehåll. Och sist men inte minst är Nginx både en proxy och en webbserver,ansedd att vara lätt och robust vid hantering av tusentals anslutningar på samma gång.

Vi behöver också ett “offer” att testa mot. Det är oftast en webbplats, ett program eller en kombination. För att hålla det väldigt enkelt valde vi att testa mot den enklaste tänkbara hemsidan, ett enkelt PHP skript. En av dem innehåller en enda funktion som heter “phpinfo” (som samlar in information från webbservern och installerade moduler) och den andra har en slumpmässig sömnfunktion (sleep) som ger oss en handläggningstid på 1 till 5 sekunder.

Kom nu ihåg att du förmodligen skulle vilja ersätta dessa skript med en egen, komplex webbplats där du har många olika funktioner. En blogg, kommentarer, RSS flöden, bilder och annat. Våra resultat kommer därför vara helt olika och inte spegla de resultat du skulle ha fått om du genomförde dessa tester.

Med de servrar som vi redan satt upp i City Cloud (kom ihåg att vi gjorde vi detta på några minuter!) går vi vidare och skapar tre Apica LoadTest klasser, en för varje testfall.

 

Testet

Det är dags att belasta servrarna. Vi använder följande parametrar med hjälp av motsvarande Apica klasser:

  • 10, 50 och 100 samtidiga anslutningar
  • 5 minuters testtid
  • Resterande parametrar som standard

Vi kan komma in i servrarna och se hur de mår med hjälp av top, medan testerna pågår. Det är inte en exakt mätning med överdrivet tillförlitliga siffror men det kan alltid ge dig ett hum om hur det går. När testerna är klara är vi redo att samla in våra färska uppgifter från Apica.

 

Resultat

Variable Apache 2: Phpinfo Lighttpd: Phpinfo Nginx : Phpinfo Apache 2: Sleep Lighttpd: Sleep Nginx: Sleep
Genomsnittlig nätverksgenomströmning 10 användare 1.31 MBit/s 1.2 MBit/s 1.39 MBit/s 110.54 KBit/s 106.86 KBit/s 75.24 KBit/s
Genomsnittlig nätverksgenomströmning 50 användare 6.47 MBit/s 6.19 MBit/s 7.34 MBit/s 544.02 KBit/s 536.06 KBit/s 89.07 KBit/s
Genomsnittlig nätverksgenomströmning 100 användare 12.6 MBit/s 12.09 MBit/s 14.27 MBit/s 1.06 MBit/s 1.01 MBit/s 87.13 KBit/s

 

I det här fallet valde vi variabeln “Genomsnittlig nätverksgenomströmning” för 10, 50 och 100 samtidiga användare. Det finns en rad andra variabler man kan välja när man testar med Apica LoadTest  och det är bara att välja och vraka bland de som är viktigast för just dig.

Med dessa data kan vi redan dra några slutsatser. Till exempel vet vi att phpinfo scriptet borde ge oss en konstant genomströmning per förfrågan och vi vet också att genomströmningen för 50 användare bör vara ungefär 5 gånger så mycket som för 10 användare. Resultaten ovan bekräftar att nätverksförbindelsen mellan testobjektet och testanläggningen (en av Apicas test-servrar) är bra. Då siffrorna är vad vi förväntat oss kan vi också utgå från att alla tre webbservrarna kan hantera åtminstone 100 samtidiga anslutningar till skriptet.

Låt oss ge dig ett par situationer där detta kan tillämpas:

  • Du har installerat en WordPress blogg och behöver ta reda på hur många samtidiga användare som kan besöka den
  • Du har hemsida och en databas på samma server, och vill veta om och hur din webbplats skulle förbättras om du flyttar databasen till en ny server
  • Du har ett webb-spel där du skalar serverkraften på bredden, men du är inte riktigt säker på hur många användare varje server kan hantera
  • Din webbplats fungerar för det mesta felfritt, men vissa användare upplever slumpmässiga problem. Med Apica LoadTest kan du köra långa och kontinuerliga tester och förhoppningsvis hitta problemen.

Testning är nödvändigt för alla alla skalbara system och något som numera bör vara en standard. Ett verktyg som Apica LoadTest kan bespara dig en hel del huvudvärk och som de flesta av oss redan vet kan problem och överbelastning drabba vilken sida som helst, när som helst, så det är lika bra att vara förberedd.