abonneren

Website-loadtest uitvoeren met Siege

Neemt het bezoek aan je website sterk toe, dan kan de webserver het ook te druk krijgen. Met een paar handige tools kun je controleren waar de grenzen liggen en daarmee je systeem optimaliseren. Een loadtest geeft je deze inzichten, en Siege helpt daarbij.

Drukte op je website is meestal goed nieuws. Tenzij bijvoorbeeld hackers het op je website hebben gemunt. Te veel verkeer kan er voor zorgen dat je webserver het te druk krijgt, en ernstig vertraagt of zelfs crasht. Daarom is het goed om het gedrag van de webserver onder belasting te onderzoeken met bijvoorbeeld Siege of ApacheBench.

Met die informatie kun je je systeem verder optimaliseren. Een goede maatregel is het ‘offloaden’ van verkeer via een content delivery network (cdn). Dit verbetert meteen de snelheid. Om gelijk even op die hackers terug te komen: Met het volgende commando kun je via netstat gemakkelijk een lijst met ip-adressen opstellen voor actieve verbindingen.

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Een gewone gebruiker zal één tot tien verbindingen hebben. Bij een aanval door een hacker zie je in het resultaat vaak wel honderden verbindingen per ip-adres. Wil je ze tegenhouden? Onderzoek dan de oorsprong van ip-adressen (dat is voor hackers vaak het Tor-netwerk).

Met tools als iptables of het meer gebruiksvriendelijke ufw kun je specifieke ip-adressen vervolgens gemakkelijk weren van je systeem. Houd er wel rekening mee dat er vaak meerdere ip-adressen worden gebruikt. Je zult dus regelmatig openstaande verbindingen moeten controleren.

Testen met Siege

Installeer Siege met

sudo apt-get install siege

Open vervolgens het configuratiebestand met

nano /etc/siege/siegerc

Het aantal gelijktijdige gebruikers kun je aanpassen achter concurrent. Standaard zijn er 15 gelijktijdige gebruikers. Achter time kun je aangeven hoe lang Siege moet testen, bijvoorbeeld 1M voor één minuut. Standaard zal Siege onbeperkt doorgaan met testen. Vervolgens kun je met de opdracht

siege www.domein.nl

de tool aan het werk zetten waarbij je in plaats van domein.nl natuurlijk je eigen websiteadres invult. Je kunt ook meerdere pagina’s van je website laten testen door de links in een tekstbestand te zetten, bijvoorbeeld urls.txt. Daarna start je de tool met

siege -f ./urls.txt

De pagina’s worden dan willekeurig bezocht. Je kunt eventueel afwijken van de standaardconfiguratie met diverse parameters.

Welk content delivery network?

Apache is bepaald niet geoptimaliseerd voor het serveren van statische content. Dat verklaart ook de populariteit van Nginx. Met de hulp van een cdn kun je relatief eenvoudig de statische content vanuit dat netwerk serveren. Dit zal zeker voor internationale bezoekers een grote snelheidswinst opleveren.

Een cdn is niet alleen geschikt voor grote bedrijven: je betaalt doorgaans alleen voor het dataverkeer, vaak zo’n 4 tot 9 cent per gigabyte. Het schaalt dus automatisch mee. Je hebt er wel het meeste aan bij grotere bezoekersaantallen. Bekende aanbieders zijn Amazon CloudFront, Cloudflare, MaxCDN en KeyCDN.

We laten zien hoe je met KeyCDN aan de slag gaat. Deze provider heeft zo’n 30 serverlocaties en ondersteunt voor de accounts onder meer ssl-certificaten, http/2-verbindingen en gzip-compressie. De content wordt vanaf een snelle ssd geserveerd. Het dataverkeer kost 4 dollarcent per GB, waarbij je wel minimaal voor 49 dollar aan credits moet kopen.

De credits verlopen na een jaar, maar mag je wel weer voor een jaar meenemen als je voor het einde van de looptijd verlengt. Omgerekend kost KeyCDN zodoende ongeveer 3,30 euro per maand (bij maximaal 100 GB dataverkeer per maand). Je kunt via app.keycdn.com/signup een gratis probeeraccount aanvragen met genoeg credits voor 250 GB aan dataverkeer en geldigheid van 30 dagen. Direct na de aanvraag kom je in je accountscherm waar we de configuratie verder afhandelen.

Aanmaken van zone

Een eerste stap bij KeyCDN is het maken van een zogenaamde zone. Als je meerdere websites wilt beheren, is het handig (maar niet verplicht) om per website een aparte zone te maken. Ga in je accountscherm naar Zones en geef een naam op, bijvoorbeeld de websitetitel. Kies bij Zone Type voor Pull. Wil je ssl gebruiken of meer instellingen zien, zet dan een vinkje bij Show Advanced Features. Bij Pull Zone Settings geef je de url van de website op, bijvoorbeeld http://www.domein.nl of https://www.domein.nl. Klik daarna op Save.

Er wordt nu een zogenoemde Zone URL gemaakt. Je kunt hierna voor alle onderdelen van je website de url vervangen door die Zone URL. Als de Zone URL bijvoorbeeld lorem-1.kxcdn.com is vervang je http://www.domein.nl/assets/layout.min.css door http://lorem-1.kxcdn.com/assets/layout.min.css.

Zodra de browser van een bezoeker het bewuste bestand opvraagt zal de desbetreffende node kijken of het in de lokale cache beschikbaar is. Als dat niet zo is, wordt de content bij jouw eigen webserver opgevraagd, opgeslagen in de cache en doorgestuurd naar de persoon die het opvraagt.

Opties voor ssl bij KeyCDN

Bij KeyCDN kun je gratis gebruik maken van ssl, zodat je content via https kunt benaderen. Dat is belangrijk als jouw website zelf ook achter het slotje zit, anders geeft de browser veiligheidsmeldingen. Je hebt verschillende opties die verschijnen als je bij het maken van de zone voor Show Advanced Features kiest. De makkelijkste is de optie shared: je kunt de content dan direct via https benaderen. In ons voorbeeld is dat https://lorem-1.kxcdn.com/assets/layout.min.css.

Een mooi en eveneens gratis alternatief is Let’s Encrypt. Kies je die optie, zorg dan dat je na het maken van de zone een cname-record aan de dns-instellingen voor je website toevoegt, die cdn.domein.nl doorverwijst naar (in dit voorbeeld) lorem-1.kxcdn.com. Maak vervolgens via het accountscherm van KeyCDN onder Zonealiases een zonealias aan voor de bewuste zone met de alias cdn.domein.nl. Hierna kun je https://cdn.domein.nl gebruiken, bijvoorbeeld https://cdn.domein.nl/assets/layout.min.css. Dat is niet sneller, maar oogt wel professioneler.

Geschreven door: Gertjan Groen op

Category: Workshop, Internet

Tags: internet, website

Laatste reactie