Meten is weten

Na onze vorige blogpost hebben we uitgebreid gesproken met onze hoster (het bedrijf dat ervoor zorgt dat jullie jodibooks.com kunnen openen). We hebben het gehad over onze wensen en eisen en wat zij daarin kunnen bieden. Naar aanleiding van dit gesprek hebben we besloten om jodiBooks Beauty te verhuizen. We gaan naar een ander hostingplatform, waar we meer vrijheid hebben, maar ook meer eigen verantwoordelijkheid. We moeten meer zelf gaan doen, leren en meten. Maar, meten is weten!

Meten is weten
Foto door William Warby op Unsplash

Waarom gaan we meten

Je kunt grofweg om twee redenen meten. Allereerst meet je hoe efficiënt je software is. Is je software traag, dan ga je je code gaan verbeteren. Als je tevreden bent over je code, ga je de tweede meting doen. Je gaat meten hoe goed je software draait op een server. Hoeveel mensen kunnen er bijvoorbeeld tegelijk je website openen? In ons geval, hoeveel mensen kunnen tegelijk jodiBooks gebruiken?

De eerste meting zou je eigenlijk altijd moeten doen. Wij hebben dat in het begin niet gedaan en daardoor kwamen we al snel in de problemen. We zijn toen snel gaan meten en hebben onze software sterk verbeterd.

De tweede meting laat je normaal over aan je hoster. Niet dat die letterlijk die meting gaat doen, maar zij kunnen je adviseren over welke server of dienst je nodig hebt.

Shared hosting of VPS?

Als je een website online zet bij een hoster, krijg je meestal een shared hosting pakket. Vrijwel iedere hoster biedt dit aan. Met shared hosting, ofwel gedeelde hosting, deel je een server met (veel) andere mensen. Dit is goedkoop, want je deelt de kosten van de server, en voor veel websites is het meer dan voldoende. Je blog of homepage kun je zo vaak prima op internet zetten.

Maar als je iets meer wilt doen, zoals jodiBooks Beauty, dan heb je iets meer nodig. Je hebt dan een eigen server nodig, een VPS (Virtual Private Server). We lopen al een tijdje met het probleem dat jodiBooks net niet snel genoeg is. Onze hoster heeft ook al aangegeven dat we eigenlijk een VPS nodig hebben. Maar die zijn natuurlijk duurder en waar haal je geld vandaan als startend bedrijf?

Managed of unmanaged?

Als je dan besluit om een VPS te nemen, wat wij gedaan hebben, welke dan? Je moet dan weten wat je precies, of op zijn minst ongeveer, nodig hebt. Daarvoor moet je gaan meten. Hoewel, je kunt dit weer overlaten aan je hoster. Je neemt dan een managed (beheerde) VPS. Je hoster regelt dan alles voor je: de server, het besturingssysteem, de beveiliging, updates, backups.

Dat is wel duur. Bij onze huidige hoster ongeveer 7 keer duurder dan shared hosting en dat kunnen we nog niet betalen. Goedkoper kan ook, dan krijg je een unmanaged VPS, waarbij je alles zelf moet doen. De hoster regelt dan de server, maar de rest moet je zelf doen. Dat gaan wij dus doen en we hebben dus een hoop te leren.

Wat gaan we meten

Wij hebben een server nodig voor de jodiBooks homepage, het blog en het dashboard. Al die dingen hebben geheugen nodig en moeten berekend worden. Iedere pagina wordt door de processor uitgerekend, zodat de server weet wat er op jouw beeld moet komen te staan. Hoe meer mensen tegelijk op onze website zitten, hoe meer er berekend moet worden. En dus hoe meer de processor moet doen. Dat noemen we het CPU-gebruik of in het engels: CPU utilization.

meten is weten: een grafiek van de performance monitor in Windows
Grafiek performance monitor in Windows

Nou vragen mensen vaak dezelfde pagina op, bijvoorbeeld de homepage. Die rekenen we niet iedere keer opnieuw uit, maar slaan we op in het geheugen (in het cache). Maar niet iedere pagina is hetzelfde voor iedereen. Jouw inkomsten zijn bijvoorbeeld specifiek voor jou. Die pagina kunnen we dus niet delen, maar slaan we wel tijdelijk op in het cache, zodat jij er snel naar terug kunt. Hoe meer mensen dus actief zijn, hoe meer van die pagina’s worden opgeslagen in het geheugen.

De essentiële vraag die we met onze meting willen beantwoorden is: “Hoeveel gebruikers kunnen we aan?” Hoeveel mensen kunnen er tegelijk gebruik maken van jodiBooks Beauty? In cijfers gaan we dus kijken hoe snel de website reageert, hoeveel geheugen we daarvoor nodig hebben en hoe snel de processor moet zijn.

Hoe gaan we meten

Bij jodiBooks, nouja thuis, hebben we een thuisserver. Die gebruiken we om de app op te ontwikkelen (Linux) en om dingen mee uit te proberen. Nu dus om te leren hoe we zelf jodiBooks Beauty moeten hosten. Dat lukt al heel aardig, dus die server gaan we ook gebruiken om te meten hoe snel jodiBooks is.

We hebben een aangepaste versie van jodiBooks versie 1.16.18 op de server gezet en die gaan we bestoken met Gatling. Dat is een programma dat gebruikers simuleert. Je kunt instellen welke pagina’s ze bezoeken, hoe vaak en met hoeveel mensen ze zijn.

We hebben 17 verschillende pagina’s benaderd en gekeken naar de verschillen met 1, 10, 20 en 50 gebruikers. Dit lijkt misschien niet veel, maar in werkelijkheid, zal het zelden of nooit voorkomen dat 10, 20 of 50 personen tegelijk een pagina 20x openen (we openen dezelfde pagina 20x om een statistisch correct gemiddelde te kunnen bepalen).

Wat hebben we gemeten

Jeej, eindelijk plaatjes. We kunnen er heel veel gaan laten zien, maar we houden het voor nu even bij 3 stuks die de gemiddelde waardes laten zien.

Laadtijden

In de eerste kun je de gemiddelde laadtijden zien. De laadtijd is de tijd die jij moet wachten nadat je op een link of knop geklikt hebt. Over het algemeen wordt gesteld dat dit bij minder dan 0,8 seconden als snel wordt ervaren en bij meer dan 1,2 seconden als langzaam. We hebben dus nog wat werk te doen.

Wat je ook meteen kunt zien is dat 1GB geheugen (grijze lijn) te weinig is. Daar hebben we verder dus niks meer mee gemeten. Op dit moment hebben we met shared hosting overigens maar 0,5GB, maar dan delen we wel het geheugengebruik van Windows met andere mensen. Hoe dan ook, dat is niet genoeg. Iets wat onze hoster overigens ook heeft aangegeven.

meetresultaten gemiddelde laadtijden
Gemiddelde laadtijden bij verschillende hoeveelheden geheugen

Geheugengebruik

De donkere tinten in de grafiek laten het geheugengebruik zien als we een server met 4GB nemen. De lichte tinten bij 2GB. IIS is de webserver, het programma dat uitrekent welke pagina en plaatjes jij te zien krijgt. SQL is de database die jouw gegevens moet opzoeken en teruggeven aan IIS.

We kunnen twee dingen zien in deze grafiek. Ten eerste maakt het niet uit of we 2 of 4GB nemen. De lijnen zijn allemaal vrijwel helemaal vlak, wat betekent dat Windows voldoende geheugen heeft om 50 gebruikers te verwerken.

Ten tweede zien we dat bij 4GB de lijnen hoger liggen. Dat is ook weer logisch. Als je meer geheugen hebt, kun je meer onthouden. In dit geval kunnen we dus meer pagina’s “cachen”, waardoor we in theorie die pagina’s de volgende keer sneller kunnen tonen.

In de vorige grafiek zagen we al dat dit in onze test weinig verschil maakt, de blauwe en oranje lijn liggen daar op elkaar. Dat komt omdat iedere gebruiker daarin dezelfde pagina opvraagt. In het echt is dat natuurlijk niet zo.

testresultaten gemiddeld geheugengebruik
Het gemiddeld geheugengebruik

Processor

Als laatste hebben we nog een grafiek van het gemiddeld processor gebruik. Wat we hier hebben gedaan is het processorgebruik genormaliseerd naar het aantal cores. Dit is even heel kort door de bocht, want niet iedere processor is hetzelfde. Maar het komt dicht genoeg in de buurt van de realiteit en het is wel zo simpel.

Tot 10 gebruikers hebben we hier aan 1 core genoeg. Daarna hebben we minimaal 2 nodig. Ook dit is de simpele uitleg, want we kijken hier naar gemiddeld gebruik. Als je met je auto naar je werk rijdt, haal je in de stad een gemiddelde snelheid van ongeveer 30 km/uur, maar je rijdt af en toe misschien toch echt harder.

meetresultaten gemiddeld processorgebruik
Gemiddeld processorgebruik

Conclusie

Met behulp van deze metingen hebben we onze serverkeuze kunnen maken. We nemen een server met 2 cores en 2GB geheugen. Deze server houden we continu in de gaten. Zodra we meer gebruikers krijgen en zien dat de laadtijden omhoog gaan, kunnen we dan een tweede server nemen of deze server groter maken.

We meten het CPU gebruik continu

Daarnaast hebben we weer gezien dat we nog een hoop werk te verzetten hebben in het optimaliseren van onze software. Als we die efficiënter kunnen maken, hoeft de server minder te doen en kunnen er dus meer mensen tegelijk gebruik van maken. Dit heeft onder andere te maken met de nieuwe architectuur waar we eerder al eens over schreven.

Voor nu gaan we eerst nog wat puntjes op de i zetten met onze unmanaged server. Dat betekent veel leren over servers en hosting en altijd blijven meten. Want, meten is weten!

Geef een reactie