TPS, MSPT en lag: wat de cijfers echt betekenen
TPS staat voor ticks per seconde en is de hartslag van je Minecraft-server: bij 20 TPS rekent de server de wereld twintig keer per seconde door, en hoger dan 20 kan niet. MSPT is het aantal milliseconden dat een enkele tick kost; onder de 50 ms is gezond, want 20 ticks van 50 ms passen precies in een seconde. Zakt je TPS onder de 20, dan is dat geen oorzaak maar een gevolg: de MSPT is dan al over de 50 ms gegaan. Daarom stuur je op MSPT en niet op TPS.
Wat is een tick en waarom is 50 ms de grens?
Een tick is een volledige rekenronde over de serverwereld. In die ronde beweegt elke mob, wordt redstone doorgerekend, groeien gewassen, vallen items, worden chunks in- en uitgeladen en draait elke plugin of mod zijn eigen code. Pas als al dat werk klaar is, begint de volgende tick.
De server plant twintig van die rondes per seconde in. Een seconde bevat 1000 milliseconden, dus elke tick heeft een budget van 50 ms. Is een tick eerder klaar, dan wacht de server de rest van dat budget af. Duurt hij langer, dan begint de volgende tick te laat en loopt de wereld achter op de klok. Dat achterlopen is wat spelers als lag ervaren: blokken die terugkomen nadat je ze hebt gebroken, mobs in slow motion, een kist die pas een seconde later opengaat.
Alles onder de 50 ms betekent dat de server zijn werk op tijd af heeft, maar er zit een groot verschil tussen 12 ms en 45 ms terwijl beide gewoon 20,0 TPS melden. Op 12 ms heb je ruim drie keer zoveel speling als je nodig hebt. Op 45 ms is een mobfarm die volstroomt of een back-uptaak al genoeg om eroverheen te gaan. Kijk ook verder dan het gemiddelde: 20 ms met pieken van 120 ms voelt slechter aan dan een strakke 35 ms zonder uitschieters. spark toont daarom percentielen, en het 95e laat zien hoe erg je slechtste ticks zijn.
Waarom waarschuwt MSPT eerder dan TPS?
Omdat TPS een plafond heeft en MSPT niet. Twintig is het maximum, dus TPS kan alleen omlaag en doet dat pas als de server ticks echt niet meer haalt. Een server die in de loop van weken van 15 ms naar 30 ms naar 48 ms MSPT kruipt, meldt die hele periode netjes 20,0 TPS. Pas bij 51 ms zie je het eerste TPS-verlies.
TPS is dus een ja/nee-lampje en MSPT is de brandstofmeter. Wie pas ingrijpt als de TPS zakt, is al weken naar het probleem toe gegroeid zonder er iets van te zien. Noteer wekelijks je MSPT en je ziet de trend aankomen.
Wat is het verschil tussen TPS, FPS en ping?
Drie getallen, drie plekken waar het mis kan gaan. Spelers noemen alle drie "lag", terwijl de oplossing telkens anders is.
- TPS en MSPT draaien op de server en zeggen hoe snel de processor het wereldwerk wegwerkt. Hier kun jij als eigenaar iets aan doen.
- FPS zijn beelden per seconde op de computer van de speler zelf: grafische kaart, shaders, resource packs en render distance in de client. De server heeft er geen invloed op.
- Ping is het netwerk ertussen: de reistijd van een pakketje heen en terug. Afstand tot het datacenter, wifi en pakketverlies bepalen dat getal.
Handig ijkpunt: omdat een tick 50 ms duurt, valt een ping die daar ruim onder blijft binnen de ruis. Wordt de ping een veelvoud daarvan, dan gaan klikken en bewegingen zichtbaar naijlen, ook bij een perfecte 20 TPS. Serverlocatie is hier het enige echte stuurmiddel; wij draaien eigen hardware in Hengelo, Frankfurt, Warschau en Noord-Amerika.
Hoe zie je welke van de drie het probleem is?
Begin bij het symptoom, niet bij het getal dat jij toevallig openhebt.
| Symptoom | Waarschijnlijke oorzaak | Eerste controle |
|---|---|---|
| Blokken breken en komen terug, kisten reageren traag | Server haalt de ticks niet, MSPT boven 50 | /tps of /spark tps, kijk naar de MSPT |
| Beeld schokt, maar chat en blokken reageren direct | FPS op de computer van de speler | F3 in de client, kijk naar fps en render distance |
| Je loopt vloeiend maar wordt steeds teruggezet | Hoge ping of pakketverlies | Ping in de serverlijst, test bekabeld in plaats van wifi |
| Alleen traag tijdens de drukste uren | Te weinig CPU-ruimte in de piek | spark profiler meelopen tijdens die piek, niet erna |
| Na een paar uur traag, na een herstart weer goed | Opbouw van entities of geheugendruk met GC-pauzes | Entity-telling per chunk en RAM-gebruik voor de herstart |
| Korte hik van een halve seconde, elke paar minuten | Wereld wegschrijven of een back-uptaak | MSPT-pieken naast save-interval en back-uptijden leggen |
Wat veroorzaakt lage TPS het vaakst?
In de praktijk komt het bijna altijd uit vier hoeken. Entities staan bovenaan: mobfarms die volstromen, honderden losse items op de grond, verdwaalde boten en minecarts. Elke entity kost rekentijd in elke tick waarin hij geladen is. Redstone en automatisering volgen, vooral klokken die permanent doortikken. Chunkloading is de derde: een te hoge view distance of simulation distance vermenigvuldigt het werk per speler, en wie nieuw terrein verkent dwingt de server wereld te genereren terwijl de klok doorloopt. Zware plugins of mods sluiten de rij.
Te weinig geheugen is een aparte categorie. Krijgt de JVM structureel te weinig RAM, dan draait de garbage collector vaker en langer en zie je dat terug als MSPT-pieken zonder duidelijke schuldige. Bij zware modpacks gebeurt dat snel: All the Mods 10 op NeoForge en Minecraft 1.21.1 vraagt minimaal 10 GB, ongeveer 12 GB voor een klein groepje en 14 tot 16 GB bij vijf of meer spelers. Draait er zo'n modpack op je server, controleer dan ook of je op Java 21 zit, want Java 17 start All the Mods 10 niet. FerriteCore scheelt zo'n 30 tot 40 procent geheugen; Canary en ModernFix zijn gangbare aanvullingen. De instellingen per oorzaak staan uitgewerkt in ons artikel over je Minecraft-server optimaliseren en lag verminderen.
Hoe meet je het met spark?
spark is het standaardgereedschap voor prestatieprofiling en draait op Paper, Purpur, Fabric, Forge en NeoForge, dus wisselen van serversoftware is niet nodig. Het staat niet voor niets in elk serieus overzicht van essentiele Minecraft-plugins.
- Installeer spark als plugin of mod en herstart de server volledig.
- Draai
/spark tpsvoor TPS en MSPT met percentielen en noteer wat je ziet als het rustig is. Zonder nulmeting weet je later niet wat afwijkt. - Start
/spark profiler startop het moment dat de klachten er zijn. Een profiel van een rustige server vertelt je niets. - Laat de profiler een paar minuten meelopen en sluit af met
/spark profiler stop. Je krijgt een link naar een rapport in de browser. - Lees dat rapport van boven naar beneden en volg de dikste tak. Daar zie je wat het grootste deel van de tick opeet.
Gebruik daarnaast /spark health voor geheugen en schijfruimte. Zie je vooral lange pauzes van de garbage collector, dan is geheugen of Java-configuratie je spoor.
Wanneer helpt een groter pakket niet?
Eerlijk is eerlijk: meer RAM lost lage TPS niet op als de server geen geheugentekort heeft. De tickloop van Minecraft leunt zwaar op een enkele processorkern, dus wat telt is hoe snel die kern is. Zit je MSPT hoog door een redstoneklok of een mobfarm, dan blijft die op een groter pakket even duur. Ruim eerst op, meet opnieuw, en schaal daarna pas.
Waar hardware wel verschil maakt, is bij trage opslag en zwakke kernen. Een SSD brengt de laadtijd van All the Mods 10 terug van meer dan tien minuten op een HDD naar twee tot drie minuten. Onze budgetlijn draait op AMD EPYC 7443P en de premiumlijn op AMD Ryzen 9 9950X, beide met NVMe-SSD; wat dat kost zie je bij Minecraft-hosting bij MC-Node. Ligt het probleem bij FPS of ping, dan koop je met een groter pakket niets.
Veelgestelde vragen
Wat is een goede TPS-waarde? 20 is het maximum en tegelijk de enige waarde die betekent dat je server op schema loopt. Alles daaronder betekent dat er ticks gemist worden en de wereld achterloopt op de klok. Kijk er altijd de MSPT bij: 20 TPS met 12 ms is gezond, 20 TPS met 45 ms zit tegen de grens van 50 ms aan.
Kan de TPS boven de 20 uitkomen? Nee. De server plant precies 20 ticks per seconde in en wacht als een tick eerder klaar is, dus 20 is een hard plafond. Na een lagpiek kan een server ticks inhalen, maar de teller loopt daarbij niet boven 20 uit.
Mijn FPS is laag terwijl de server 20 TPS haalt, wat nu? Dan ligt het aan je eigen computer of clientinstellingen, niet aan de server. Verlaag je render distance, zet shaders uit en overweeg een prestatiegerichte clientmodpack als Fabulously Optimized, dat op Fabric draait met Sodium en Lithium en ruim 12 miljoen downloads op Modrinth heeft.
Helpt meer RAM tegen lage TPS? Alleen als je echt te weinig had. Bij een zwaar modpack als All the Mods 10 is dat realistisch, want dat vraagt minimaal 10 GB en 14 tot 16 GB bij vijf of meer spelers. Bij een Paper-server met genoeg geheugen los je lage TPS niet op met gigabytes, maar met minder entities en snellere processorkernen.
Waarom heb ik lag terwijl mijn ping laag is? Ping meet alleen de reistijd van je pakketjes over het netwerk, niet hoe snel de server de wereld doorrekent. Zit de MSPT boven de 50 ms, dan komen je pakketjes keurig snel aan bij een server die te laat antwoordt. Draai /spark tps om dat in een paar seconden uit te sluiten.