Stress-test je website of server met LoadUI

11 augustus, 2014
Handleidingen
Webhosting, Servers, Performance, Laadtijd

Op het moment dat je website structureel of ineens druk bezocht wordt, bijvoorbeeld als gevolg van een verwijzing op een populaire site of een succesvolle reclamecampagne, is het belangrijk dat de webserver al deze verzoeken efficiënt kan verwerken, zonder dat de website vertraagt of onbereikbaar wordt.

Het aantal verzoeken dat een webserver tegelijkertijd aankan, is grotendeels afhankelijk van de beschikbare systeembronnen, zoals de processor en het geheugen, en van de techniek achter de website: een verzoek voor een "statisch" bestand, zoals een afbeelding of een HTML-pagina, is minder veeleisend dan een "dynamische" webpagina die bijvoorbeeld met behulp van gegevens uit een database bij elk verzoek opnieuw gegenereerd moet worden.

Er zijn verschillende hulpmiddelen beschikbaar om te achterhalen hoeveel verzoeken je webserver ongeveer tegelijkertijd kan verwerken. Eén daarvan is LoadUI, een open source programma van SmartBear waarmee verkeer naar een webpagina eenvoudig gesimuleerd kan worden.

Let op: een stress-test van je website kan erg belastend zijn voor de webserver. Wanneer je een server deelt met anderen, zoals bij webhosting meestal het geval is, kunnen zij hier mogelijk hinder van ondervinden, doordat hun websites trager worden als gevolg van de tijdelijk verhoogde systeembelasting. Ook kan het veel dataverkeer opeisen, en kunnen access logs snel groeien. Gebruik LoadUI daarom bij voorkeur alleen in combinatie met een eigen server.

LoadUI downloaden en installeren

LoadUI is gratis beschikbaar voor Windows, Mac OS X en Linux. Via onderstaande links kun je een versie voor jouw besturingssysteem downloaden:

Na het downloaden kun je het installatiebestand openen en de instructies op het scherm opvolgen om LoadUI te installeren.

Een eerste project aanmaken

Project aanmaken in LoadUI

Alle componenten van een stress-test worden ondergedeeld in een project. Na het opstarten van LoadUI dubbelklik je aan de linkerzijde op "Create Project" om een nieuw project aan te maken. Vul een naam in voor het project en klik op "Create". Vervolgens verschijnt het aangemaakte project en kun je er op dubbelklikken om het te openen. Opties om het project te verwijderen, klonen of hernoemen komen tevoorschijn als je eenmaal op de naam klikt.

De stress-test ontwerpen

Er verschijnt een raster van het tabblad "Design", met aan de linkerzijde drie categorieën van te selecteren testcomponenten: "scenario's", "generators" en "runners". Met scenario's kunnen geavanceerde testsituaties opgezet worden, die we in deze introducerende handleiding niet zullen behandelen. Een "generator" bepaalt de mate en regelmaat waarmee verzoeken naar de webserver zullen worden gestuurd, en een "runner" bepaalt het doel van de verzoeken, zoals een specifieke webpagina. Voor deze handleiding combineren we de "Fixed Rate"-generator met de "Web Page"-runner.

Generator en Web Page Runner in LoadUI

Door op het pijltje rechts van "Runners" te klikken, verschijnen enkele mogelijkheden, waaronder de "Web Page Runner". Klik en sleep deze naar het raster toe, en vul vervolgens een webadres in. Klik op "Run Once" of "Open in Browser" om de werking van het adres te controleren.

We hebben nu de doelpagina van de test bepaald. Om verkeer naar deze pagina te simuleren, hebben we nog een generator nodig. Klik op het pijltje rechts van "Generators" en sleep de "Fixed Rate"-generator naar het raster om deze aan het testontwerp toe te voegen.

Standaard staat de "rate", het aantal verzoeken dat per seconde zal worden uitgevoerd, op 10. Door op de draaiknop te klikken, de muisknop vast te houden, en de muis omhoog of naar beneden te bewegen, is het mogelijk om dit aantal te wijzigen. Ook kan in plaats van seconden gekozen worden voor minuten of uren. Dit aantal kan gedurende de test worden aangepast, dus begin bij voorkeur met een lage instelling, om onnodige belasting te voorkomen.

Om de generator aan de runner te koppelen, klik je op het onderste bolletje van de ene, en sleep je deze naar de bovenste van de andere, of vice versa.

Resultaten grafisch weergeven

Voordat we de test starten, gaan we naar het tabblad "Statistics". Hier vinden we aan de linkerzijde de zojuist aangemaakte Web Page Runner, die we rechts naar de lege ruimte kunnen slepen om een grafiek van de resultaten aan te maken. De grafiek verschijnt in beeld, en we worden gevraagd welke statistieken we er in op willen nemen. Selecteer bijvoorbeeld "Average" en klik op "Create" om de gemiddelde reactietijd (in ms) in beeld te brengen.

Start de test

Statistieken in LoadUI

We zijn nu klaar om de stress-test uit te voeren. Door bovenin het scherm op de afspeelknop te klikken, start het programma de generator, die het ingestelde aantal verzoeken per seconde/minuut/uur aan de webpagina zal richten. De grafiek wordt nu langzaamaan gevuld. Door rechts op "Follow" te klikken, kun je de meest recente resultaten blijven volgen, en met behulp van "Zoom" kun je eventueel de resultaten over een langere periode bekijken.

In de access logs van de webserver verschijnen de verzoeken als afkomstig van het eigen IP-adres en de user-agent "Apache-HttpClient/4.3 (java 1.5)".

Bovenin het scherm vind je de totale tijd, en het aantal verzonden ("Sent") en mislukte ("Failures") verzoeken.

De druk opvoeren

Vertraging in reactietijd in LoadUI

Tijdens de test kun je wisselen tussen de tabbladen "Design" en "Statistics", bijvoorbeeld om het aantal verzoeken per seconde te verhogen of te verlagen. Wijzigingen die je doorvoert, hebben direct effect, en de resultaten verschijnen dan ook real-time in de statistieken.

Door het aantal verzoeken per seconde, minuut of uur langzaam op te voeren, is het mogelijk om te achterhalen bij welke belasting de webserver langzamer begint te reageren, of zelfs foutmeldingen geeft. Ook is het mogelijk om andere of meerdere generators aan een runner te koppelen.

Op elk moment kan op de stopknop geklikt worden om de generator stil te zetten.

Rapportage

Zodra de test is afgerond, kun je eventueel rechtsbovenin, links van het vraagteken, op het klemboord-icoon klikken om een rapport te genereren. Hier worden verschillende statistieken in opgenomen, zoals de minimale, maximale en gemiddelde reactietijd, en het aantal succesvolle en mislukte verzoeken.

Met behulp van LoadUI hebben we een eenvoudige laadtest uitgevoerd, die een indicatie geeft van het aantal paginaverzoeken dat de webserver tegelijkertijd kan verwerken. Houd er echter rekening mee dat LoadUI alleen de pagina zelf (de opgegeven URL) test, en niet de daarin inbegrepen elementen die echte bezoekers daarentegen wel zullen downloaden, zoals afbeeldingen, JavaScript en stylesheets.