// VPS

VPS traag of lag? Zo vind je in 10 minuten de oorzaak

VPS traag of lag? Zo vind je in 10 minuten de oorzaak

Is je VPS traag, kijk dan eerst wát er traag is en loop daarna vier plekken langs: de cpu (load, één core op 100 % of steal time), het geheugen (vol, swap of de OOM-killer), de schijf (iowait) en het netwerk (ping en pakketverlies). Met top, free, iostat en mtr weet je binnen tien minuten welke van de vier remt.

Installeer de hulpmiddelen vooraf, dan heb je ze bij de hand als het misgaat:

sudo apt install htop sysstat mtr-tiny

Wil je grafieken over een langere periode, dan laat Netdata per seconde zien wat je VPS doet. Snel even kijken kan ook met htop, zoals in het gebruik van je VPS bekijken.

VPS traag? Bepaal eerst wat er precies traag is

"Traag" kan drie heel verschillende dingen betekenen, en elk wijst ergens anders heen:

  • Lag in een game: spelers springen terug naar een eerdere plek, kapotte blokken verschijnen opnieuw, voertuigen haperen. Meestal haalt de server zijn ticks niet (cpu), of verliest de verbinding pakketten (netwerk).
  • Een trage SSH-sessie: letters verschijnen met vertraging. Dat wijst op het netwerk, of op een VPS die zo vol zit dat zelfs je shell moet wachten.
  • Een trage website: vaak de database of de schijf, soms het geheugen.

Let ook op het patroon. Is het altijd traag, alleen 's avonds als iedereen online is, of steeds rond hetzelfde tijdstip? Een vast tijdstip wijst vaak naar een geplande taak, zoals je eigen back-upscript of een cronjob. En klaagt één speler of iedereen? Als het één speler is, ligt het meestal aan zijn eigen verbinding.

Vier kolommen om te ontdekken waarom een VPS traag is: cpu met top, geheugen met free en vmstat, schijf met iostat en netwerk met ping en mtr
VPS traag? Met deze commando's zie je binnen tien minuten of de cpu, het geheugen, de schijf of het netwerk remt.

Cpu: load, één core op 100 % en steal time

Begin met twee getallen:

nproc
uptime

nproc geeft je aantal vCores, uptime de load average over 1, 5 en 15 minuten. Ligt de load langere tijd boven het aantal vCores, dan staat er werk in de rij. Linux telt daarin ook processen die op de schijf wachten, dus kijk daarna in top wat er aan de hand is. Druk in top op 1 om elke vCore apart te zien. Je ziet dan meestal één van drie patronen:

  • Alle cores vol, met hoge waarden bij us en sy: je hebt te weinig rekenkracht, of er draait een proces door. Kijk in htop welk proces bovenaan staat.
  • Eén core op 100 %, de rest rustig: het klassieke gameserverprobleem. De hoofdthread van Minecraft, FiveM of Valheim zit aan zijn plafond. Meer vCores helpen dan niet, een snellere core wel. Waarom, lees je in Wat is een vCore? en Ryzen of EPYC voor je gameserver?
  • Een hoge st: steal time, de tijd dat de hypervisor je vCore liet wachten omdat de fysieke core elders aan het werk was. Een paar procent af en toe is normaal bij gedeelde vCores. Blijft st langere tijd duidelijk hoog terwijl je server traag is, bewaar dan de uitvoer van vmstat 1 30 en stuur die mee in een ticket; onze support denkt mee.

Geheugen: vol, swap of de OOM-killer

free -h

Kijk naar de kolom available, niet naar free. Linux gebruikt ongebruikt geheugen als cache (buff/cache) en geeft dat terug zodra een programma het nodig heeft, dus een lage free is normaal. Staat available bijna op nul, dan zit je echt vol. Twee signalen bevestigen dat:

  • Swappen: in vmstat 1 staan de kolommen si en so steeds boven nul. Je VPS schuift geheugen naar de schijf en terug, en dat voel je overal.
  • De OOM-killer: de kernel stopt een proces als het geheugen op is. Je gameserver lijkt dan zonder foutmelding te crashen. Controleer het met sudo dmesg -T | grep -i -E 'out of memory|killed process'.

Een veelgemaakte fout bij Java-servers: -Xmx gelijk zetten aan het hele geheugen van de VPS. Java gebruikt meer dan alleen de heap en het besturingssysteem wil ook ruimte, dus laat minstens 1 GB vrij. Draai je Minecraft met mods op minder dan 8 GB, dan is meer geheugen hier gewoon de oplossing.

Schijf: iowait en geplande taken

In top staat wa voor de tijd dat de cpu wacht tot de schijf klaar is. Is die regelmatig hoog, kijk dan per schijf:

iostat -x 1

Let op r_await en w_await: de gemiddelde tijd in milliseconden die een lees- of schrijfopdracht duurt, inclusief het wachten in de rij. Op NVMe horen die laag te zijn; lopen ze sterk op, dan houdt een proces de schijf bezig. De kolom %util zegt bij NVMe weinig: volgens de handleiding van iostat laat hij bij apparaten die opdrachten parallel afhandelen hun grens niet zien. Welk proces de schijf gebruikt, zie je met sudo iotop (pakket iotop).

Bekende veroorzakers zijn je eigen back-upscript of een cronjob die een hele wereldmap inpakt, een logbestand dat ongeremd groeit en een databasequery zonder index. Kijk ook met df -h of de schijf niet vol is: een volle schijf geeft vreemde fouten en vastlopers, lang voordat je doorhebt waarom.

Netwerk: ping, mtr en pakketverlies

Meet vanaf je eigen computer naar de VPS:

ping -c 20 jouw-ip
mtr -rwc 100 jouw-ip

Op Windows gebruik je ping -n 20 jouw-ip; voor mtr is daar WinMTR. mtr stuurt 100 rondes van een seconde en toont per tussenstation het verlies en de vertraging. Lees het zo: verlies bij een tussenstation dat niet doorloopt tot de laatste regel komt meestal van een router die pings lage voorrang geeft, en is onschuldig. Verlies dat doorloopt tot en met je VPS is echt. Klaagt één speler, meet dan ook vanaf de VPS naar zijn IP-adres.

Haperen alle spelers tegelijk, kijk dan eerst op status.mc-node.net of er iets speelt met de nodes. Alle VPS'en staan in Hengelo; hoe de afstand naar je spelers de ping bepaalt, lees je in Serverlocatie en ping.

Gameserver-specifiek: TPS, MSPT en hitches

Een gameserver meet zijn eigen gezondheid, en die cijfers zijn vaak duidelijker dan top. Een Minecraft-server wil 20 ticks per seconde halen, dus maximaal 50 ms per tick (MSPT). Loopt de MSPT op terwijl één core op 100 % staat, dan is het de cpu. Zijn TPS en MSPT goed maar lagt iedereen, dan zit het eerder in het netwerk. Per game:

Wanneer upgraden helpt (en wanneer niet)

Een groter pakket lost alleen het knelpunt op dat je gevonden hebt:

Wat je zietKnelpuntWat helpt
available bijna nul, swap of OOM-meldingengeheugeneen groter pakket binnen je lijn
één core op 100 %, hoge MSPTsnelheid per corevan KVM VPS naar Premium VPS, of zware plugins en scripts aanpakken
alle cores volrekenkrachtmeer vCores, of de belasting verdelen
langdurig hoge stgedeelde coresticket met vmstat-uitvoer, of een VDS met vaste cores
hoge wa en awaitschijfgebruikde taak vinden en verplaatsen; upgraden helpt zelden
pakketverlies tot de laatste hopnetwerkstatuspagina checken, mtr meesturen; upgraden helpt niet

Binnen je lijn upgrade je in het klantenpaneel en betaal je het verschil voor de rest van je periode. Is je knelpunt de snelheid per core, dan is de Premium VPS met Ryzen 9 de logische stap: een AMD Ryzen 9 9950X* met DDR5, tot 5,7 GHz tegenover tot 4,0 GHz bij de EPYC 7443P van de KVM VPS. Is het steal time, kijk dan naar een VDS met vaste cores. Overstappen tussen lijnen gaat niet met één klik: reken op een nieuwe VPS en een verhuizing. Twijfel je welke lijn past, lees dan Welke VPS kiezen?

* of AMD Ryzen 9 7950X3D, afhankelijk van de node.

Veelgestelde vragen

Waarom is mijn VPS traag?

Meestal door één van vier knelpunten: de cpu (één core op 100 % of steal time), het geheugen (vol of swappen), de schijf (veel iowait door een proces of een volle schijf) of het netwerk (pakketverlies). Met top, free -h, iostat -x 1 en mtr zie je binnen tien minuten welke het is. Een gameserver met lag heeft vaak een cpu-knelpunt in de hoofdthread.

Wat is steal time en is dat erg?

Steal time (st in top) is de tijd dat je vCore wilde rekenen, maar de hypervisor de fysieke core aan een andere VPS gaf. Een paar procent af en toe is normaal bij gedeelde vCores. Blijft het langere tijd hoog terwijl je server traag is, stuur dan de uitvoer van vmstat 1 30 mee in een ticket, of kies een VDS met vaste cores.

Helpt meer RAM tegen lag?

Alleen als het geheugen echt vol is: available in free -h staat bijna op nul, je VPS swapt of de OOM-killer stopt processen. Lag door een hoofdthread die op één core vastzit, los je met meer RAM niet op; dan helpt een snellere core, of minder zware plugins en scripts.

Hoe zie ik of er een storing is?

Kijk op status.mc-node.net; daar staat de live status van de nodes. Is daar niets te zien en hapert alleen jouw server, zoek de oorzaak dan met top, free, iostat en mtr. Stuur de uitvoer van mtr vanaf je eigen computer mee als je een ticket opent.

Verder lezen

// ZELF PROBEREN
Je Minecraft-server binnen 60 seconden online
Bekijk de pakketten →