Traagheid van een site of een server kan worden veroorzaakt door een aantal hoofdoorzaken:

  1. Inefficiënt geschreven applicatiecode
  2. Teveel data per pagina (veel te downloaden voordat een pagina weergegeven kan worden)
  3. Trage internetverbinding / slechte wifi
  4. Verkeerde tuning van de server
  5. Overbelasting / onderdimensionering van de server

Bij inefficiënt geschreven applicatiecode moeten er teveel handelingen door de server worden uitgevoerd voor het behaalde resultaat. Een voorbeeld die we in de praktijk tegen zijn gekomen: op de voorpagina van een site stond een lijst van een drietal willekeurige producten in de spotlight. De applicatie moest daar voor de lijst van alle artikelen ophalen uit de database en koos daar drie willekeurig uit. Dit was nodeloos veel werk. De applicatie had ook rechtstreeks aan MySQL 3 willekeurige resultaten kunnen vragen.
Dit soort dingen komen we helaas vaak tegen. Zelfs met twee keer snellere servers (die niet bestaan) krijg je zo'n site maar twee keer zo snel. En meestal zoek je een versnelling van een factor 100..

Code kan nog zo efficiënt geschreven zijn, als je een 18 megapixel afbeelding naar de browser stuurt en daar laat schalen tot een 200 pixel brede afbeelding, dan gaat het downloaden van een pagina veel te veel tijd kosten: je hebt teveel data per pagina. Schaal afbeeldingen tot het formaat en kwaliteit die nodig zijn. Verklein (minify) javascript en css. Kijk kritisch naar wat de bezoeker ziet en wat je daar allemaal voor aanlevert. Een filmpje van 3 MB groot gaan blurren en dan uitsnijden met wat letters is leuk. Een animated gif van diezelfde letters was leuker geweest en vele malen kleiner.

Applicatie snel en niet te grote pagina's? Dan nog kan alles verpest worden door een trage internetverbinding of slechte wifi. Controleer andere sites bij andere providers ook traag zijn. Is dat zo, los dan eerst de verbindingsproblemen op. Werk je met wifi, test dan eens met een computer met een bedrade verbinding.

Uiteraard werkt een applicatie nauw samen met verschillende componenten op de server. PHP en MySQL zijn daar over het algemeen de belangrijksten in. Ook technieken als Redis en Varnish zijn belangrijk. Al deze componenten moeten goed ingesteld worden (we noemen dit ook wel tuning) voor hun taak. Heeft je server veel geheugen, dan kan MySQL bijvoorbeeld veel meer data vasthouden en hoeft het niet meer van disk gelezen te worden. En tussenresultaten hoeven minder snel naar disk geschreven te worden om geheugen te besparen.
Wij leveren onze servers standaard op met een goede tuning voor de taak die ze toebedeeld krijgen. Toch valt hier vaak nog wel winst te behalen. Je kunt ons altijd vragen om de tuning van een server onder de loep te nemen. Overigens heeft tuning weinig zin wanneer je applicatiecode inefficiënt geschreven is. Kijk daar dus altijd als eerste naar.

Een server die niet berekend is op zijn taak die raakt overbelast. Als de code verder efficiënt geschreven is en de server netjes getuned dan is de enige mogelijkheid: uitbreiding van resources. Bijvoorbeeld meer geheugen of meer processorkernen. Overigens kan uitbreiding van resources in zekere mate inefficiënte code compenseren. Je kunt dus ook overwegen resources af te nemen in plaats van dure programmeurs te betalen.

Voor echt grote omgevingen die niet meer op een enkele server passen kunnen we maatwerkoplossingen bieden. Zo schalen we verder dan een enkele (grote) server aan zou kunnen. Mocht dit zo ver komen dan zijn we altijd bereikbaar voor een adviesgesprek uiteraard.