Lag verminderen op je Minecraft server
Lag heeft drie verschillende oorzaken die er vanaf de stoel van een speler allemaal hetzelfde uitzien. Deze pagina loopt ze langs in de volgorde die het probleem het snelst vindt, en elk getal erin is uitgerekend uit de instellingen die ons eigen paneel echt aanbiedt.
TPS begrijpen
TPS staat voor ticks per second, en het is de hartslag van de server. Alles wat de wereld doet, mobbeweging, blokupdates, redstone, groei, gebeurt één keer per tick, en het doel is 20 daarvan per seconde. Dat geeft elke tick 50 milliseconden om af te ronden. Loopt dat uit, dan begint de volgende tick te laat, zakt de TPS, en vertraagt de hele wereld samen: daarom maakt lag ovens langzamer smelten in plaats van dat het spel er hakkelig uitziet. Typ /tps in de console om het te zien. Paper geeft drie gemiddeldes, over één, vijf en vijftien minuten, en het gemiddelde van één minuut is degene die antwoord geeft op de vraag of het nu slecht is.
| TPS | Eén tick duurt | Hoe het aanvoelt |
|---|---|---|
| 20 TPS | 50 ms | Normaal. Niets om te repareren. |
| 18 TPS | 55.6 ms | Nauwelijks zichtbaar. Redstone timing begint te verschuiven. |
| 15 TPS | 66.7 ms | Mobs haperen, hoppers lopen achter, farms produceren minder. |
| 10 TPS | 100 ms | Halve snelheid. Ovens, groei en daglicht doen er allemaal twee keer zo lang over. |
| 5 TPS | 200 ms | Onspeelbaar. Blokken verschijnen terug nadat je ze hebt gesloopt. |
Drie soorten lag
Drie verschillende problemen worden allemaal lag genoemd, en maar één daarvan is iets waar jij iets aan kunt doen. Ze uit elkaar houden bespaart je de moeite om een server te optimaliseren die nooit het trage deel was.
| Soort | Waar het gebeurt | Wat je eraan kunt doen |
|---|---|---|
| Serverkant | Op de machine. Dit is wat TPS meet. | Al het andere op deze pagina. Entiteiten, chunks laden, plugins en redstone landen hier allemaal. |
| Clientkant | Op de eigen computer van de speler. Uit zich als lage FPS en gehaper, niet als langzame ovens. | Niet rechtstreeks, maar een lagere kijkafstand stuurt minder chunks en verlicht ook hun belasting. |
| Netwerk, oftewel ping | Tussen de twee in. Afstand en routering, geen verwerking. | Kies een regio dicht bij je spelers. Geen hoeveelheid CPU repareert een oceaan. |
Genereer je chunks vooraf
Terrein genereren is het duurste dat een server doet. Biomes, grotten, structuren, ertsen en licht worden allemaal uitgerekend de eerste keer dat iemand die kant op loopt, en vier spelers die op paarden in vier richtingen wegrijden kunnen een gezonde server op hun eentje naar een TPS van één cijfer duwen. Doe je het van tevoren, terwijl er niemand online is, dan verschuif je die kosten naar een moment waarop het er niet toe doet.
Installeer Chunky
Het is een gewone plugin jar in de plugins map, en hij werkt op elk van onze Bukkit gebaseerde serversoftware.
Zet de radius die je echt wilt
Kies hetzelfde getal als je world border, in blokken. Ver voorbij de grens genereren is uren CPU tijd voor terrein waar nooit iemand op zal staan.
/chunky radius 5000Start hem op een lege server
Het genereren zelf is zwaar, dus draai het 's nachts of voordat je het adres deelt. Hij gaat verder als hij wordt onderbroken.
/chunky start
Verlaag je kijkafstand en simulatieafstand
Kijkafstand is een radius, dus de kosten ervan stijgen kwadratisch en niet lineair. Ons eigen paneel gaat van 2 tot 32, en over dat hele bereik gaat één speler van 25 chunks naar 4.225. Vermenigvuldig dat met het aantal mensen online en je ziet meteen waarom dit de eerste knop is om aan te draaien. Van 10 naar 8 gaan kost bijna niemand iets dat hij merkt, en scheelt de server ongeveer een derde van de chunks.
| Kijkafstand | Chunks die één speler vasthoudt | Tegenover 10 |
|---|---|---|
| 2 chunksDe laagste die ons paneel toelaat | 25 | 6% |
| 4 chunks | 81 | 18% |
| 6 chunks | 169 | 38% |
| 8 chunks | 289 | 66% |
| 10 chunks | 441 | 100% |
| 12 chunks | 625 | 142% |
| 16 chunks | 1.089 | 247% |
| 32 chunksDe hoogste die ons paneel toelaat | 4.225 | 958% |
Simulatieafstand is degene die loont. Kijkafstand bepaalt wat een speler kan zien; simulatieafstand bepaalt hoe ver de wereld blijft doordraaien, en dat is dus wat er echt aan ticks kost. Hem een paar chunks lager zetten dan de kijkafstand is meestal het juiste antwoord. Dit zijn de 5 prestatie instellingen die ons eigen paneel laat zien, met de tekst die wij ernaast zetten.
| Instelling | Bereik | Wat hij doet |
|---|---|---|
| Kijkafstand (chunks)view-distance | 2 tot 32 | Hoe ver spelers kunnen zien. Lager is lichter voor CPU en geheugen. |
| Simulatieafstand (chunks)simulation-distance | 2 tot 32 | Hoe ver de wereld blijft doortikken. De ene instelling met de meeste invloed op de snelheid. |
| Entiteitbereik (%)entity-broadcast-range-percentage | 10 tot 500 | Hoe ver entiteiten naar clients worden gestuurd. Lager verlaagt de netwerkbelasting. |
| Watchdog (ms)max-tick-time | 1000 tot 600000 | Hoe lang één tick mag duren voordat de server zichzelf als vastgelopen beschouwt. Onder 60000 kan de server zichzelf herstarten tijdens zware lag. |
| Synchrone chunk writessync-chunk-writes | Aan of uit | Dit uitzetten is meestal sneller op gedeelde opslag. |
Ruim entiteiten op
Elke mob, elk gevallen item, elk item frame, elke armour stand en elke minecart is een entiteit, en de server loopt elke tick de hele lijst langs. Vijfhonderd kippen opeengepakt in tien blokken kosten meer dan vijftig spelers die rondlopen. Paper kan dit uitdunnen zonder dat iemand het merkt: activation ranges en tick rates in paper-world-defaults.yml laten verre entiteiten minder vaak tikken, en spawn limits in bukkit.yml begrenzen hoeveel er tegelijk kunnen bestaan. Item frames en armour stands in een bouwwerk zijn de stiekeme boosdoeners, want niets doodt ze en ze bewegen nooit.
Optimaliseer redstone
Een redstone update cascadeert: één verandering vuurt blokupdates af door alles wat eraan vastzit, en een snelle klok doet dat honderden keren per seconde. Paper levert een alternatieve redstone implementatie die aantoonbaar goedkoper is voor grote circuits, en die is het waard om aan te zetten voordat je ontwerpen gaat verbieden. Hoppers verdienen hun eigen regel: elke hopper controleert elke tick op items, of er nu iets beweegt of niet, dus een sorteersysteem met tweehonderd hoppers draait de hele dag tegen volle prijs.
Gebruik Spark om de bottleneck te vinden
Alles hierboven is gokken totdat je het meet. Spark is een profiler die je vertelt waar de ticks naartoe gingen: entiteiten die tikken, chunks die laden, de event handler van één plugin, of de garbage collector. Start hem terwijl de server echt moeite heeft, laat hem een paar minuten draaien, stop hem, en hij geeft je een link met de uitsplitsing. Paper 1.21 en hoger levert hem al kant en klaar mee, dus op de meeste van onze servers hoef je vooraf niets te installeren.
/spark profiler start
/spark profiler stopLag door plugins
Het aantal plugins is niet het getal dat ertoe doet. Vijftien goed gekozen plugins verslaan veertig waarvan de helft overlapt, maar één plugin die chunks scant op de main thread verslaat ze allemaal qua schade. Zet een Spark profiel één plugin bovenaan, zoek dan eerst naar een nieuwere versie, dan naar een configoptie die het dure deel uitzet, en dan naar iets anders dat hetzelfde werk doet. De lijst twee keer per jaar nalopen en weghalen wat niemand gebruikt kost een uur en verdient zichzelf terug.
Wanneer je moet opschalen
Heb je je chunks vooraf gegenereerd, de simulatieafstand verlaagd, de entiteiten uitgedund en met Spark geprofileerd, en houdt het gemiddelde van één minuut nog steeds geen 20 vast, dan is de machine de grens en niet de instellingen. De hele dag boven de tachtig procent geheugen zitten, of CPU pieken tijdens gewoon spelen, is het signaal. Al onze 7 pakketten laten zien wat ze je geven, en onze RAM gids laat zien welke daarvan bij welk soort server past.
| Pakket | vCPU | Geheugen | Opslag |
|---|---|---|---|
| Mini | 2 vCPU | 4 GB | 40 GB NVMe |
| Starter | 4 vCPU | 8 GB | 75 GB NVMe |
| Standard | 6 vCPU | 12 GB | 100 GB NVMe |
| Premium | 8 vCPU | 24 GB | 200 GB NVMe |
| Ultimate | 12 vCPU | 48 GB | 250 GB NVMe |
| Enterprise | 16 vCPU | 64 GB | 300 GB NVMe |
| Dedicated | 18 vCPU | 96 GB | 350 GB NVMe |
Wat er bij elk pakket zit, op elke laag, staat op de volledige lijst met functies.
Vragen die mensen stellen als de server hapert
Lost meer RAM een lage TPS op?
Alleen als geheugen het probleem was. TPS is een CPU maat: een server kan op de helft van zijn geheugen zitten en toch ticks missen omdat één plugin te veel werk doet per tick. Profileer eerst, en beslis dan pas wat je koopt.
Welke kijkafstand moet ik gebruiken?
Voor de meeste servers iets tussen 6 en 10, met de simulatieafstand een paar chunks lager. De tabel hierboven laat zien wat elke stap kost, zodat je een getal kunt kiezen in plaats van er een over te typen.
Bij hoeveel spelers begint een server te laggen?
Zo'n getal bestaat niet. Twintig spelers verspreid over een verkende wereld zijn goedkoper dan vijf die in één chunk aan redstone bouwen. Wat de spelers doen bepaalt het, niet hoeveel het er zijn.
Helpen geplande herstarts?
Ze plakken een pleister op een lek in plaats van hem te repareren, maar ze werken wel: een herstart per nacht ruimt opgehoopte entiteiten op en geeft geheugen terug dat de garbage collector nooit meer losliet. De moeite waard om te hebben, niet om op te vertrouwen.
Is Spark veilig om op een live server te draaien?
Ja, daar is hij voor gemaakt. Hij bemonstert in plaats van elk punt te meten, dus de overhead is klein, en je moet hem draaien tijdens echte lag wil het rapport iets betekenen.
Pakketten met ruimte om in te groeien
Mini4 GBvanaf €6.99 per maand op een termijn van vierentwintig maanden
Starter8 GBvanaf €8.79 per maand op een termijn van vierentwintig maanden
Standard12 GBvanaf €13.59 per maand op een termijn van vierentwintig maandenBekijk alle 21 pakketten in drie editiesBeantwoord vier vragen en krijg de maat
De chunktellingen op deze pagina zijn het kwadraat van twee keer de kijkafstand plus één, uitgerekend over het hele bereik dat ons instellingenscherm toelaat, en de instellingentabel is dat scherm: de labels, de grenzen en de hulptekst worden eruit gelezen op het moment dat de pagina wordt gebouwd.



