Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

Prestaties van een Minecraft-server: lag, flags, view distance, Chunky en spark

Zo ontdek je wat je server vertraagt en hoe je dat oplost: TPS en MSPT, opstartflags en geheugen, weergaveafstand, instellingen van Paper, de wereld vooraf genereren met Chunky en profileren met spark.

  • gevorderd
  • ~40 min
  • Bijgewerkt op 1-10-2026

Een server die “hapert” heeft meestal geen tekort aan hardware, maar één concrete oorzaak: een te grote simulatieafstand, het genereren van nieuw terrein, een overvolle farm of een slecht geschreven plugin. We laten zien hoe je lag meet, de oorzaak vindt en die oplost, van snelle aanpassingen tot de instellingen van Paper en profileren.

Wat je nodig hebt

  • Een Minecraft-server bij StormHost (we raden Paper of Purpur aan, een deel van de handleiding geldt ook voor Fabric en NeoForge)
  • Toegang tot de tabbladen Console, Serverinstellingen, Opstarten en Bestanden
  • Een back-up van de server voordat je de configuratie aanpast (handleiding)
  • Ongeveer 40 minuten

Zo zie je wat er lagt#

Een Minecraft-server berekent het spel in ticks. Hij moet er 20 per seconde halen en heeft dus 50 milliseconden per tick. Twee getallen die je moet kennen:

WaardeWat het betekentGoedProbleem
TPS (ticks per second)Hoeveel ticks de server per seconde werkelijk haalt.20Onder 19 merken spelers vertraging, onder 15 is het spel onaangenaam.
MSPT (milliseconds per tick)Hoeveel milliseconden één tick duurt.Onder 50 ms, liefst onder 35 msBoven 50 ms houdt de server het niet bij en daalt de TPS.

MSPT is de nauwkeurigere graadmeter: een server met een MSPT van 45 ms heeft nog steeds 20 TPS, maar geen enkele reserve. Zodra de MSPT boven 50 ms komt, begint de TPS te dalen.

De waarden vraag je op in de Console (commando's typ je zonder schuine streep):

text
tps
mspt
spark tps
  • tps – de gemiddelde TPS over de laatste 1, 5 en 15 minuten (Paper, Purpur).
  • mspt – de gemiddelde, kortste en langste ticktijd (Paper, Purpur).
  • spark tps – TPS, MSPT (minimum, mediaan, 95e percentiel, maximum) en de belasting van de processor. Werkt overal waar spark aanwezig is (Paper heeft het ingebouwd).

Houdt de server het langere tijd niet bij, dan verschijnt in de console:

Uitvoertext
Can't keep up! Is the server overloaded? Running 2500ms or 50 ticks behind

De server zegt hiermee dat hij 2,5 seconden (50 ticks) achterloopt en die ticks overslaat. Eén melding bij het starten of bij het genereren van terrein is geen probleem. Komt de melding om de paar minuten terug, ga dan verder met deze handleiding.

Serverlag of iets anders?#

Wat de speler zietOorzaakWaar je zoekt
Blokken komen terug nadat ze zijn afgebroken, mobs blijven hangen, alle spelers hebben hetzelfde probleemLag van de server (lage TPS)Deze handleiding
Lage FPS, schokkerig beeld, maar bij andere spelers is alles in ordeDe prestaties van de computer van de spelerDe grafische instellingen in het spel, mods voor de client
De speler wordt “teruggeteleporteerd”, hoge ping alleen bij hemDe verbinding van de spelerDe ping van de speler met het commando spark ping --player <NICK>
De server is in orde, maar nieuwe gebieden laden langzaamHet genereren van terreinVooraf genereren met Chunky

Snelle winst#

Gesorteerd van het grootste effect naar het kleinste. Het meeste regel je binnen tien minuten.

VolgordeStapWaarom het helptWaar
1Gebruik Paper of Purpur in plaats van VanillaPaper bevat honderden optimalisaties en bugfixes die Vanilla niet heeft.Het tabblad Software, zie Servertypes
2Genereer de wereld vooraf en stel de wereldgrens inNieuw terrein genereren is de zwaarste bewerking van een server.Chunky
3Verlaag simulation-distance naar 6–⁠8 en view-distance naar 8Minder chunks per speler = minder werk in elke tick.View distance en simulation distance
4Zoek de oorzaak met een profilerDie wijst de concrete plugin, farm of entiteit aan.spark
5Beperk entiteiten en farmsHonderden dieren in één omheining of een overvolle farm maken de TPS kapot.Instellingen van Paper
6Laat de standaard opstartflags staanDe standaardpreset is afgestemd op de grootte van je geheugen.Opstartflags
7Werk de server, plugins en mods bijNieuwe versies verhelpen vaak geheugenlekken en trage stukken code.De tabbladen Software en Plugins

Plugins die “lag opruimen”

Plugins die een wonderbaarlijke versnelling beloven (regelmatig voorwerpen op de grond verwijderen, “RAM opschonen”, de garbage collector geforceerd aanroepen) lossen het probleem niet op. Ze verwijderen spullen van spelers, veroorzaken vaak haperingen en verbergen alleen de oorzaak. Zoek de echte oorzaak met spark.

Opstartflags en geheugen#

Flags zijn de parameters waarmee Java wordt gestart. Ze bepalen de grootte van het geheugen voor het spel (de heap), de bovengrenzen voor het geheugen buiten de heap en het gedrag van de garbage collector, die overbodige gegevens uit het geheugen opruimt. In je klantaccount vind je ze op het tabblad Opstarten, in het onderdeel Opstartparameters.

De heap en de bovengrenzen berekent je klantaccount zelf op basis van de grootte van het pakket, het servertype, de Java-versie en het aantal plugins of mods. Ze worden opnieuw berekend bij het aanmaken van de server, na een pakketwijziging, na een wijziging van het type of de versie en vóór een start vanuit het portaal, als een van die zaken sinds de vorige keer is veranderd. Een startcommando dat je handmatig in het panel hebt aangepast of als eigen commando hebt ingesteld, wordt niet overschreven. Heeft zo'n commando een grotere heap dan een kleiner pakket aankan, dan starten we de server na de pakketwijziging niet (hij zou meteen crashen) en sturen we je een e-mail.

OptieWat het doetWanneer je het gebruikt
Preset – Aanbevolen (G1)De garbage collector G1, ingesteld volgens de documentatie van Paper. De standaard voor alle servertypes.De meeste servers.
Preset – Korte pauzes (ZGC)Een garbage collector met zeer korte pauzes, ten koste van een hogere processorbelasting. Alleen Java 21 en nieuwer.Grote servers vanaf 16 GB, als spark gc lange pauzes laat zien en de processor reserve heeft.
Preset – ProxyFlags voor Velocity en BungeeCord.Wordt alleen aangeboden bij proxyservers.
Preset – Zonder tuningAlleen de heapgrootte en de bovengrenzen voor het geheugen.Tijdelijk, als je zoekt of een fout door de flags komt.
Eigen parametersAanvullende parameters. Toegestaan zijn alleen -XX:…, -D…=… en --add-modules=…, hooguit 30. De heap kun je niet instellen. De bovengrens voor netwerkbuffers (-XX:MaxDirectMemorySize), gecompileerde code (-XX:ReservedCodeCacheSize) en geladen klassen (-XX:MaxMetaspaceSize) wel, de heap wordt dan opnieuw berekend.Als de handleiding van een plugin of mod om een bepaalde -D-eigenschap vraagt, of als een plugin voor voicechat meer netwerkbuffers nodig heeft.

Alle presets hebben dezelfde beveiligingen: een bovengrens voor netwerkbuffers, gecompileerde code en geladen klassen, MALLOC_ARENA_MAX=2 (minder geheugenarena's van de allocator) en vanaf Java 17 -XX:TrimNativeHeapInterval (geeft ongebruikt geheugen terug aan het systeem). Purpur krijgt daarnaast automatisch --add-modules=jdk.incubator.vector (snellere berekeningen waar Purpur gebruik van kan maken).

De knoppen in dit onderdeel:

  • Opslaan – de instellingen worden bij de volgende start gebruikt.
  • Opslaan en herstarten – de server herstart meteen. Start hij niet met de nieuwe flags, dan zet je klantaccount ze zelf terug en zie je de melding De parameters zijn niet compatibel, teruggezet naar de vorige instellingen.
  • Vorige terugzetten – zet de laatste werkende instellingen terug.
  • Aanbevolen gebruiken – verschijnt als de heap te groot is voor het pakket of als het startcommando geen bovengrenzen voor het geheugen heeft. Stelt het aanbevolen commando in.
  • Nu opnieuw berekenen – berekent de flags meteen opnieuw, je hoeft niet te wachten op de volgende start vanuit het portaal.

Onder de optie Geheugenverdeling zie je hoeveel de heap krijgt en hoeveel er overblijft voor de andere onderdelen. Na een automatische herberekening toont je klantaccount bijvoorbeeld We hebben het startcommando aangepast aan de nieuwe RAM-grootte: heap 8,2 → 9,6 GB.

Een server buiten StormHost? Een startscript met dezelfde berekening voor Docker, Linux en Windows maakt de Startscript-generator voor je.

Waarom de heap niet het hele RAM is#

De heap (-Xmx) groeit nooit boven zijn eigen grens uit. Wat groeit is het geheugen buiten de heap: netwerkbuffers, geladen klassen van plugins en mods, gecompileerde code, threads en de allocator van het systeem. Het meest de netwerkbuffers: zonder bovengrens mogen die groeien tot de grootte van de heap, waardoor een server met een heap van 6 GB op 12 GB kan uitkomen.

De container van de server heeft een harde limiet die 5% hoger ligt dan het pakket (bij pakketten tot 4 GB 10%, tot 2 GB 15%) en heeft geen swap. Gaat het proces over de limiet, dan beëindigt het systeem het. In de Console verschijnt Out of memory: true, in het log van de server staat geen enkele fout.

Daarom heeft elk groot onderdeel buiten de heap een bovengrens, wordt alles met een reserve opgeteld tot onder de grootte van het pakket en krijgt de heap de rest. Loopt een onderdeel tegen zijn bovengrens aan, dan schrijft de server een fout naar het log (OutOfMemoryError: Direct buffer memory of Metaspace) in plaats van stil te crashen, en aan die fout zie je wie de schuldige is.

Geheugen van het pakketHeap (Paper, 20 plugins)Heap (modpack, 200 mods)Limiet van de container
10 GB7.872 MB7.040 MB10.752 MB
12 GB9.792 MB8.896 MB12.902 MB
16 GB13.504 MB12.672 MB17.203 MB
24 GB21.056 MB20.224 MB25.805 MB

De heap heeft dezelfde minimale en maximale grootte (-Xms = -Xmx) en wordt meteen bij het starten ingenomen. De geheugengrafiek in het panel toont daarom vanaf het begin een hoog getal. Het panel telt bovendien de bestandscache van de wereld mee, die het systeem vrijgeeft als dat nodig is. Een getal dicht bij de limiet betekent op zichzelf geen crash.

De documentatie van Paper raadt voor een server minstens 6–⁠10 GB heap aan, ongeacht het aantal spelers, en waarschuwt dat meer geheugen boven een bepaalde grens de prestaties niet verbetert.

Wanneer het tijd is voor een groter pakket

Laat spark health zien dat de heap ook na het opruimen blijvend boven 90% zit (spark gc meldt frequente en lange pauzes) en heb je geheugenlekken in plugins uitgesloten, dan heeft de server meer geheugen nodig. Een groter pakket stel je in op het tabblad Pakket wijzigen (handleiding). De flags worden na de upgrade vanzelf opnieuw berekend en gelden vanaf de volgende start.

View distance en simulation distance#

De wereld is verdeeld in chunks (kolommen van 16 × 16 blokken). De server houdt rond elke speler de chunks binnen een bepaalde straal geladen:

  • view-distance – hoeveel chunks rond de speler de server naar het spel stuurt (wat de speler ziet). Heeft vooral invloed op het geheugen en het netwerk.
  • simulation-distance – binnen welke straal chunks “leven”: mobs bewegen, gewassen groeien, redstone en farms werken. Heeft vooral invloed op de processor, en dus op de TPS.

Het aantal chunks groeit met het kwadraat van de afstand. Bij view-distance=10 houdt de server rond elke speler 441 chunks geladen, bij 8 maar 289 (een derde minder). Bij de simulatie is het effect hetzelfde.

Situatieview-distancesimulation-distance
Een kleine server met vrienden, zonder lag1010
Een openbare survival, 20+ spelers8–⁠106–⁠8
De server lagt en je weet niet waarom86
Minigames, lobby6–⁠84–⁠6

Je stelt ze in op het tabblad Serverinstellingen in de groep Wereld (alle instellingen). Een simulatieafstand onder 5 raden we af: grotere farms werken dan niet meer, omdat een deel van de farm buiten het gesimuleerde gebied valt.

Paper en afzonderlijke werelden

Op Paper kun je de afstanden ook per wereld instellen in het bestand spigot.yml (world-settings › default › view-distance en simulation-distance). De waarde default betekent “gebruik server.properties”.

Instellingen van Paper#

Paper en Purpur hebben hun eigen configuratie in de map config:

BestandWat erin staat
config/paper-global.ymlInstellingen voor de hele server (proxy, het laden van chunks, spamlimieten).
config/paper-world-defaults.ymlStandaardinstellingen voor alle werelden. Hier stel je de prestaties af.
world/dimensions/minecraft/<dimensie>/paper-world.ymlUitzonderingen voor één dimensie (vanaf versie 26.1, <dimensie> is overworld, the_nether of the_end). In oudere versies het bestand paper-world.yml in de map van de wereld, bijvoorbeeld world_nether/paper-world.yml.

Pas altijd paper-world-defaults.yml aan. Open het bestand op het tabblad Bestanden in de editor, zoek de bestaande sectie (bijvoorbeeld chunks:) en wijzig de waarde daarin. Voeg dezelfde sectie niet een tweede keer toe: bij een dubbele sleutel weigert de server het bestand te laden, of hij gebruikt er maar één en jouw wijziging heeft geen effect.

De regels van YAML

Spring alleen in met spaties (nooit met tabs), gebruik dezelfde inspringing op hetzelfde niveau en zet een spatie na de dubbele punt. Maak een back-up voordat je iets aanpast. Herstart de server na de aanpassing. Het commando paper reload raden we af, omdat sommige waarden alleen bij het starten worden geladen.

Een selectie van instellingen met de grootste invloed op de prestaties:

InstellingWat het doetAanbevolen waardeWanneer wijzigen
chunks.prevent-moving-into-unloaded-chunksLaat spelers niet in een chunk die nog niet is geladen (snel vliegen met een elytra, rijden in een mijnkar). De server hoeft chunks dan niet midden in een tick geforceerd te laden.trueStandaard false. Zet het aan op servers met elytra's en snel reizen.
chunks.entity-per-chunk-save-limitHoeveel entiteiten van een bepaald type in één chunk worden opgeslagen. Beschermt tegen chunks die vol zitten met duizenden pijlen of ervaringsbollen.arrow: 16, experience_orb: 16, snowball: 8, ender_pearl: 8, fireball: 8, small_fireball: 8Standaard zonder limiet (-1). Zet hier geen dieren of mobs in, want de rest zou bij het opslaan verdwijnen.
collisions.max-entity-collisionsNa hoeveel botsingen een entiteit stopt met het berekenen van verdere botsingen.2Standaard 8. Een lagere waarde ontlast plekken waar veel mobs op elkaar gepakt staan flink. Mobs in een menigte duwen elkaar dan minder weg. Werkt een farm daardoor niet meer, zet de waarde dan weer hoger.
environment.optimize-explosionsVersnelt de berekening van explosies (TNT, creepers).trueStandaard false. Zet het altijd aan, het resultaat van een explosie verandert niet.
misc.redstone-implementationDe manier waarop redstone wordt berekend: VANILLA, EIGENCRAFT, ALTERNATE_CURRENT.ALTERNATE_CURRENTStandaard VANILLA. De alternatieve berekening maakt redstonestof veel lichter, maar verandert in een klein aantal gevallen het gedrag van schakelingen die afhangen van de volgorde van updates. Laat het spelers met technische bouwwerken weten.
hopper.disable-move-eventSchakelt de gebeurtenis voor plugins uit bij elke verplaatsing van een voorwerp door een hopper.falsetrue alleen als geen enkele plugin de verplaatsingen van hoppers bewaakt (kistbeveiliging, filters). Anders zouden beveiligingen niet meer werken.
tick-rates.mob-spawnerHoe vaak (in ticks) mobspawners hun omgeving controleren en spawnen.2Standaard 1. De spawner wordt alleen om de andere tick gecontroleerd. Paper telt zijn wachttijd daarbij sneller af, zodat hij ongeveer even vaak mobs spawnt. -1 schakelt alle spawners uit.
tick-rates.grass-spreadHoe vaak (in ticks) de server probeert gras te verspreiden.4Standaard 1. Gras verspreidt zich langzamer, spelers merken dat meestal niet.
entities.spawning.despawn-rangesDe afstand tot de speler waarop mobs willekeurig (soft) of onmiddellijk (hard) verdwijnen. Vanilla: 32 en 128 blokken.Bijvoorbeeld monster: soft: 30, hard: 72Op overvolle servers. Een kleinere hard maakt ruimte vrij voor nieuwe mobs dichter bij de spelers.
environment.treasure-maps.enabledSchatkaarten van dorpelingen en uit kisten. Het zoeken naar het dichtstbijzijnde bouwwerk is erg zwaar.truefalse als spark lag laat zien bij het handelen met cartografen of het openen van kisten.
entities.armor-stands.tickOf harnasstandaards ticken (fysica, zwaartekracht).truefalse op servers met duizenden decoratieve standaards. De standaards vallen dan niet en sommige plugins werken er mogelijk niet mee.

Een voorbeeld van hoe de aanpassingen in het bestand eruitzien (alleen de gewijzigde delen, laat de overige regels van het bestand staan):

config/paper-world-defaults.ymlYAML
chunks:
  entity-per-chunk-save-limit:
    arrow: 16
    experience_orb: 16
    snowball: 8
    ender_pearl: 8
  prevent-moving-into-unloaded-chunks: true
collisions:
  max-entity-collisions: 2
entities:
  spawning:
    despawn-ranges:
      monster:
        hard: 72
        soft: 30
environment:
  optimize-explosions: true
misc:
  redstone-implementation: ALTERNATE_CURRENT
tick-rates:
  grass-spread: 4
  mob-spawner: 2

spigot.yml en bukkit.yml#

Paper leest ook de oudere configuratiebestanden spigot.yml en bukkit.yml in de hoofdmap van de server.

spigot.yml#

Alle instellingen staan in de sectie world-settings › default.

InstellingWat het doetAanbevolen waardeWanneer wijzigen
entity-activation-range.animalsBinnen welke afstand (blokken) van een speler dieren volledig ticken. Verder weg ticken ze alleen af en toe.16–24Standaard 32. Verlaag dit op servers met grote dierenweides.
entity-activation-range.monstersHetzelfde voor monsters.24Standaard 32.
entity-activation-range.villagersHetzelfde voor dorpelingen.16Standaard 32. Dorpelingen horen bij de zwaarste entiteiten. Een te lage waarde vertraagt hun farms.
entity-activation-range.miscOverige entiteiten (voorwerpen op de grond, mijnkarren).8–12Standaard 16.
entity-activation-range.raidersOvervallers.48Standaard 64. Een te lage waarde maakt overvallen (raids) kapot.
merge-radius.itemTot welke afstand (blokken) dezelfde voorwerpen op de grond worden samengevoegd.2.5Standaard 0.5. Een grotere waarde = minder entiteiten op de grond.
merge-radius.expHetzelfde voor ervaringsbollen. -1 = het gedrag van Vanilla.3.0Standaard -1.
nerf-spawner-mobsMobs uit een spawner hebben geen kunstmatige intelligentie (ze lopen niet en vallen niet aan).trueStandaard false. Bespaart rekenkracht bij XP-farms, maar mobs uit een spawner vallen dan niet aan. Laat het de spelers weten.
ticks-per.hopper-transferNa hoeveel ticks een hopper een voorwerp verplaatst.8De standaard is 8 (Vanilla). Een hogere waarde vertraagt alle hoppers en verandert het gedrag van redstoneklokken.

bukkit.yml#

InstellingWat het doetAanbevolen waardeWanneer wijzigen
spawn-limits.monstersHet maximale aantal monsters (per speler, als in Paper per-player-mob-spawns aan staat).50Standaard 70. Minder monsters = minder berekeningen.
spawn-limits.animalsHet maximale aantal dieren dat vanzelf verschijnt.8Standaard 10.
spawn-limits.water-animals, water-ambient, ambientVissen, inktvissen, vleermuizen.3, 10, 5Standaard 5, 20, 15.
ticks-per.monster-spawnsNa hoeveel ticks de server probeert monsters te spawnen.2Standaard 1.
ticks-per.autosaveNa hoeveel ticks de hele wereld wordt opgeslagen (6.000 = 5 minuten).6000Niet wijzigen. Paper slaat chunks doorlopend op.

De wereld vooraf genereren met Chunky#

Komt een speler op een plek waar nog niemand is geweest, dan moet de server het terrein genereren. Dat is de zwaarste bewerking die er is: één speler met een elytra kan de TPS van de hele server omlaag halen. De oplossing is het terrein vooraf te genereren en de wereldgrens zo in te stellen dat spelers niet buiten het voorbereide gebied kunnen komen.

De plugin Chunky genereert terrein op de achtergrond, stap voor stap en met de mogelijkheid om te onderbreken. Hij bestaat voor Paper, Purpur en Folia en ook als mod voor Fabric, Forge en NeoForge.

  1. Installeer Chunky op het tabblad Plugins (bij mods Mods) › Bladeren, zoek op Chunky en klik op Installeren. Herstart daarna de server (handleiding voor plugins).

  2. Stel in de Console het midden van de wereldgrens in:

    text
    worldborder center 0 0
    • worldborder center – stelt het midden van de wereldgrens in.
    • 0 0 – de coördinaten X en Z van het midden. Meestal het midden van de wereld, eventueel de coördinaten van de spawn.
  3. Stel de grootte van de grens in:

    text
    worldborder set 10000
    • worldborder set – stelt de grootte van de grens in.
    • 10000 – de diameter in blokken. De wereld wordt 10.000 × 10.000 blokken, dus 5.000 blokken vanaf het midden in elke richting.
  4. Neem de grens over in Chunky:

    text
    chunky worldborder

    Chunky stelt zijn midden en straal in op basis van de wereldgrens.

  5. Start het genereren:

    text
    chunky start

    In de console zie je regelmatig de voortgang in procenten, het aantal gegenereerde chunks en een schatting van de resterende tijd.

Andere commando's:

CommandoWat het doet
chunky pausePauzeert het genereren en slaat de voortgang op. Handig als er veel spelers verbinden.
chunky continueGaat verder met het gepauzeerde genereren.
chunky cancelAnnuleert de taak. De gegenereerde chunks blijven staan.
chunky progressToont de voortgang (handig in het spel).
chunky silentZet de voortgangsmeldingen in de console uit of aan.
chunky start world square 0 0 5000Start het genereren zonder wereldgrens: de wereld world, vierkante vorm, midden 0 0, straal 5.000 blokken.
chunky worldKiest een wereld. In het spel kiest het zonder naam de wereld waarin je staat.

Nether en End#

De Nether is acht keer kleiner dan de Overworld (1 blok in de Nether = 8 blokken in de Overworld). Voor een grens met een diameter van 10.000 blokken in de Overworld (straal 5.000) is in de Nether een straal van 625 blokken genoeg. Verbind met het spel, ga naar de Nether en typ in de chat:

text
/chunky world
/chunky center 0 0
/chunky radius 625
/chunky start
  • /chunky world – kiest zonder naam de wereld waarin je je nu bevindt (de Nether).
  • /chunky center 0 0 – het midden van het genereren.
  • /chunky radius 625 – de straal in blokken.
  • /chunky start – start het genereren.

Stel de wereldgrens in de Nether (/worldborder set 1250, ingevoerd in de Nether) alleen in op Paper en Purpur en vanaf versie 1.21.9 ook elders. Pas vanaf die versie heeft elke dimensie een eigen grens. In oudere versies van Vanilla, Fabric en NeoForge zou het commando ook de grens in de Overworld veranderen.

De End kun je kleiner genereren (bijvoorbeeld een straal van 2.000–⁠3.000 blokken), spelers bewegen daar vooral rond de eilanden.

Schijf en processor

Een vooraf gegenereerde wereld neemt schijfruimte in: hoe groter de grens, hoe meer. Begin met een kleinere diameter (5.000–⁠10.000 blokken) en houd de vrije ruimte in de gaten op het tabblad Bestanden of in de schijfindicator in de Console. Het genereren belast de processor volledig: start het als er weinig spelers op de server zijn, of pauzeer het tussendoor met het commando chunky pause.

Na een herstart van de server gaat het genereren niet vanzelf verder. Pak het weer op met het commando chunky continue (of stel in plugins/Chunky/config.yml continue-on-restart: true in).

Diagnose met spark#

spark is een profiler: terwijl de server draait, legt hij vast wat de server doet en hij toont het resultaat als een overzichtelijke boom met percentages. Paper heeft hem vanaf versie 1.21 ingebouwd (Purpur ook), op Fabric en NeoForge installeer je de mod spark van Modrinth. Op een Velocity-proxy heet het commando sparkv.

Snel overzicht#

Commando (in de console)Wat het laat zien
spark tpsDe TPS over de laatste 5 s, 10 s, 1 min, 5 min en 15 min, de ticktijden en de belasting van de processor. De waarden kleuren groen, oranje of rood, afhankelijk van hoe goed ze zijn.
spark healthEen link naar een live overzicht: TPS, MSPT, processor, geheugen, schijf. Wordt elke 10 seconden bijgewerkt.
spark gcDe geschiedenis van de garbage collector: hoe vaak en hoe lang hij het geheugen heeft opgeruimd.
spark pingDe gemiddelde ping van de spelers. Met --player <NICK> de ping van één speler.
spark tickmonitor --threshold-tick 50Bewaakt ticks die langer duren dan 50 ms en toont elk daarvan. Voer spark tickmonitor nog een keer in om het bewaken uit te zetten.

Profileren stap voor stap#

  1. Wacht tot de server lagt (of tot er een normaal aantal spelers op zit). Een profiel van een lege server laat niets zien.

  2. Start in de Console de profiler voor 10 minuten:

    text
    spark profiler start --timeout 600
    • spark profiler start – start de profiler.
    • --timeout 600 – na 600 seconden (10 minuten) stopt hij vanzelf en uploadt hij het resultaat.
  3. Wacht 10 minuten. In de console verschijnt een link naar het profiel (spark.lucko.me/…).

  4. Plak de link in de Analyse van een Spark-profiel. Die laat zien wat de server vertraagt en wat je moet veranderen.

Je hoeft het profiel niet te uploaden: met de optie --save-to-file (bijvoorbeeld spark profiler start --timeout 600 --save-to-file) slaat spark het op als een .sparkprofile-bestand in de map plugins/spark (op Fabric en NeoForge config/spark). Download het op het tabblad Bestanden en upload het naar de analyse.

Wil je de profiler eerder stoppen, voer dan spark profiler stop in. Voor korte uitschieters (de server “bevriest” af en toe een seconde) gebruik je:

text
spark profiler start --only-ticks-over 100
  • --only-ticks-over 100 – legt alleen ticks vast die langer duren dan 100 ms. Het filtert het normale gebruik weg, zodat alleen de “laggy” ticks overblijven. Kies een waarde tussen 50 en 100.

Het resultaat lezen#

Wil je zelf door de boom lopen, open dan de link naar het profiel in je browser:

  1. Klap in de lijst met threads Server thread uit, de hoofdthread van het spel. Problemen in andere threads (het laden van chunks, het netwerk) komen minder vaak voor.
  2. Klap de knooppunten uit door erop te klikken en let op de percentages. Volg altijd het pad met het hoogste aandeel.
  3. Tijd die in Thread.sleep() of “parked” wordt doorgebracht is in orde: de server wacht op de volgende tick, omdat hij reserve heeft.
  4. Typische bevindingen:
In het profiel zie jeWat het betekentWat je doet
Een groot aandeel bij tickEntities of bij entiteiten (Villager, Zombie …)Te veel entiteiten.entity-activation-range, de spawnlimieten, de farms bekijken (zie Hoeveel entiteiten er op de server zijn).
Een groot aandeel bij het genereren van chunksSpelers ontdekken nieuw terrein.Chunky en een wereldgrens.
De pakketnaam van een plugin (bijvoorbeeld com.example.plugin)Een concrete plugin.Bijwerken, instellen of vervangen.
Redstone, hoppersTechnische bouwwerken.redstone-implementation, hopper.disable-move-event (voorzichtig).
  1. Schakel in de bovenste balk de weergave om naar Sources. Die toont een aparte boom voor elke plugin of mod, zodat je meteen ziet welke het zwaarst belast.

De link naar het profiel kun je naar de maker van de plugin sturen of naar onze support. Hij bevat geen wachtwoorden of serverbestanden.

Hoeveel entiteiten er op de server zijn#

Op Paper toont het commando paper entity list de aantallen entiteiten per type. In de console moet je ook de wereld opgeven:

text
paper entity list * minecraft:overworld
paper entity list minecraft:villager minecraft:overworld
  • paper entity list – het overzicht van entiteiten.
  • * – zonder filter, toont alle typen entiteiten met hun aantallen (het eerste getal zijn tickende entiteiten, het tweede niet-tickende).
  • minecraft:villager – een filter op één type. Het overzicht toont dan de coördinaten van de chunks waarin de meeste van deze entiteiten zitten.
  • minecraft:overworld – de wereld (minecraft:the_nether, minecraft:the_end voor de andere dimensies). In het spel hoef je de wereld niet op te geven, dan wordt de wereld gebruikt waarin je staat.

Bekijk de gevonden plek daarna in het spel en maak de farm of de omheining kleiner.

Mods voor prestaties (Fabric en NeoForge)#

Fabric en NeoForge hebben de optimalisaties van Paper niet, maar er bestaan servermods met hetzelfde doel. Je vindt ze allemaal op Modrinth (op het tabblad Mods › Bladeren):

ModWat het doetLoader
LithiumOptimaliseert de fysica, de kunstmatige intelligentie van mobs en andere delen van het spel zonder het gedrag te veranderen.Fabric, NeoForge
FerriteCoreVerlaagt het geheugengebruik.Fabric, Forge, NeoForge
ModernFixVersnelt het starten en verlaagt het geheugengebruik, vooral bij grote modpacks.Fabric, Forge, NeoForge
C2MEParallel genereren en laden van chunks. Grijpt diep in op de omgang met de wereld, maak dus een back-up voordat je hem inzet.Fabric
sparkDe profiler die hierboven is beschreven.Fabric, Forge, NeoForge
ChunkyDe wereld vooraf genereren.Fabric, Forge, NeoForge

Kies een mod altijd voor de exacte versie van Minecraft en van de loader. Meer in de handleiding Mods en modpacks.

Wanneer het tijd is voor een upgrade#

Een upgrade van het pakket is zinvol als:

  • spark laat zien dat de server gelijkmatig belast is (geen enkele plugin of farm overheerst) en de MSPT bij een normaal aantal spelers blijvend boven 40 ms ligt,
  • spark health laat zien dat het geheugen blijvend tegen de bovengrens zit en de garbage collector het opruimen niet bijhoudt,
  • je een groot modpack toevoegt of rekent op duidelijk meer spelers.

Neemt één plugin of farm het grootste deel van de tijd in beslag, dan lost meer rekenkracht het probleem niet op. De oorzaak moet dan worden weggenomen.

Controle#

  1. Herstart de server na de wijzigingen en laat hem minstens 15 minuten met spelers draaien.
  2. Voer spark tps in. De MSPT (mediaan) moet onder 50 ms liggen, liefst onder 35 ms, en de TPS moet 20 zijn.
  3. De melding Can't keep up! mag niet meer terugkomen.
  4. Twijfel je, start dan opnieuw een profiel van 10 minuten en vergelijk het met het vorige.

Als iets niet werkt#

De server start niet meer na een wijziging in de configuratie#

Meestal zit er een fout in de YAML (een tab, een verkeerde inspringing, een dubbele sectie). Zoek in de console naar een regel met de bestandsnaam en het regelnummer. Herstel de fout, of verwijder het bestand: Paper maakt het bij het starten opnieuw aan met de standaardwaarden (je aanpassingen gaan daarbij verloren). Je kunt ook een back-up herstellen.

De parameters zijn niet compatibel, teruggezet naar de vorige instellingen.#

De server is met de nieuwe flags niet gestart en je klantaccount heeft ze teruggezet. Controleer je eigen flags (een typfout, een flag voor een andere Java-versie) en probeer de preset zonder eigen flags.

De server gaat plotseling uit zonder fout in het log#

Een typisch teken dat de geheugenlimiet is overschreden. In de Console staan de regels Exit code: 137 en Out of memory: true en je klantaccount toont boven de console De server had geen geheugen meer en het systeem heeft hem beëindigd. Het panel start de server één keer opnieuw. Crasht hij binnen een minuut voor de tweede keer, dan blijft hij uit.

  1. Controleer op het tabblad Opstarten de waarschuwing bij de opstartflags. Is de heap te groot voor het pakket of heeft het commando geen bovengrenzen voor het geheugen, klik dan op Aanbevolen gebruiken.
  2. Een handmatig aangepast of eigen startcommando overschrijft je klantaccount niet. Gebruik de aanbevolen preset, of stel de heap in volgens de tabel in het onderdeel Waarom de heap niet het hele RAM is.
  3. Zoek in het log naar OutOfMemoryError: Direct buffer memory of OutOfMemoryError: Metaspace. Die wijzen op een plugin of mod die de netwerkbuffers vult of steeds opnieuw klassen laadt.
  4. Gaan de crashes ook met de aanbevolen instellingen door, zoek dan naar een geheugenlek: spark heapsummary laat zien wat de heap inneemt, spark profiler start --alloc --timeout 300 wat het meeste geheugen toewijst. Plak de link in de Analyse van een Spark-profiel, of stuur hem naar onze support.

java.lang.OutOfMemoryError: Java heap space#

De heap is vol. Of er staat meer op de server dan in het geheugen past (een modpack, een groot aantal spelers), of een plugin of mod “verliest” geheugen (een geheugenlek). Een upgrade helpt, of het lek opsporen met spark heapsummary. Meer fouten vind je in het artikel Veelvoorkomende fouten van een Minecraft-server.

Chunky meldt een ongeldige wereld#

De naam van de wereld bestaat niet. Gebruik in het spel /chunky world zonder naam (dat kiest de wereld waarin je staat), of voer in de console de naam van de hoofdwereld in volgens level-name (standaard world).

Na het inschakelen van ALTERNATE_CURRENT werkt een redstonebouwwerk niet meer#

Sommige schakelingen vertrouwen op de volgorde van updates van Vanilla. Zet misc.redstone-implementation terug op VANILLA en herstart de server.

Samenvatting

  • Meet lag met de commando's tps, mspt en spark tps: het doel is 20 TPS en een MSPT onder 50 ms.
  • Het grootste effect: Paper, een vooraf gegenereerde wereld met een grens (Chunky) en een verstandige simulation-distance.
  • De heap en de bovengrenzen voor het geheugen stelt je klantaccount zelf in op basis van het pakket. Wijzig de standaardpreset Aanbevolen (G1) alleen als je er een reden voor hebt.
  • De oorzaak van lag vind je met spark profiler start --timeout 600, plak de link in de Analyse van een Spark-profiel.
  • Wijzig de instellingen van Paper in config/paper-world-defaults.yml, na een back-up en met een herstart.

Was deze handleiding nuttig?

Geldt voor

  • Paper, Purpur
  • Fabric, NeoForge
  • Minecraft Java 1.20 en nieuwer
  • Minecraft 26.x

Diensten

Fout in de handleiding melden

Zoeken in de handleidingen