Minecraft server optimalisatie gids – een snellere server en minder lag!
Opmerking voor gebruikers die op vanilla, Fabric of Spigot zitten (of alles lager dan Paper) – ga naar je server.properties en verander sync-chunk-writes
naar false
. Deze optie is geforceerd uitgeschakeld op Paper en zijn afgeleiden, maar op andere server implementaties moet je dit handmatig uitzetten. Dit stelt de server in staat om chunks op te slaan buiten de hoofdthread om, waardoor de belasting op de hoofd tick loop afneemt.
Handleiding voor versie 1.17. Sommige dingen kunnen nog van toepassing zijn op 1.15 - 1.16.
Gebaseerd op deze gids en andere bronnen (ze zijn allemaal gelinkt in de gids wanneer ze relevant zijn).
Intro
Er zal nooit een gids zijn die je perfecte resultaten geeft. Elke server heeft zijn eigen behoeften en grenzen aan hoeveel je kunt of wilt opofferen. Knutselen aan de opties om ze af te stemmen op de behoeften van je server is waar het allemaal om draait. Deze gids is alleen bedoeld om u te helpen begrijpen welke opties invloed hebben op de prestaties en wat ze precies veranderen.
Voorbereidingen
Server JAR
Je keuze van server software kan een groot verschil maken in prestatie en API-mogelijkheden. Er zijn op dit moment meerdere levensvatbare populaire server JARs, maar er zijn er ook een paar waar je om verschillende redenen beter weg van kunt blijven.
Aanbevolen top picks:
- Paper – De meest populaire server software die gericht is op het verbeteren van de prestaties terwijl het gameplay en mechanica inconsistenties repareert.
- Airplane – Paper afgeleiden die tot doel heeft de server prestaties verder te verbeteren.
- Purpur – Airplane/Paper afgeleiden gericht op functies en de vrijheid van aanpassing.
Je moet wegblijven van:
- Yatopia - "De gecombineerde kracht van Paper forks voor maximale instabiliteit en unmaintainablity!" - KennyTV's lijst van schaamte. Niets meer over te zeggen. (Bovendien is het project stopgezet).
- Sugarcane - Yatopia 2.0.
- Mohist - "Mohist is geprogrammeerd om kwaadaardig, spel-brekend, en zeer onstabiel te zijn" - Redenen waarom je het niet zou moeten gebruiken
- Elke betaalde server JAR die async claimt - 99.99% kans dat het oplichterij is.
- Bukkit/CraftBukkit/Spigot – Extreem verouderd in termen van performance vergeleken met andere server software waar je toegang tot hebt.
- Elke plugin/software die plugins inschakelt/uitschakelt/laadt op runtime. Zie deze sectie om te begrijpen waarom.
- Veel forks verder stroomafwaarts van Airplane of Purpur zullen instabiliteit en andere problemen tegenkomen. Als u op zoek bent naar meer prestatiewinst, optimaliseer dan uw server of investeer in een persoonlijke private fork.
Map pregen
Map pregeneratie is een van de belangrijkste stappen in het verbeteren van een low-budget server. Dit helpt servers die gehost worden op een gedeelde CPU/single core node het meest, omdat ze niet volledig gebruik kunnen maken van async chunk loading. Je kunt een plugin zoals Chunky gebruiken om de wereld voor te genereren. Zorg ervoor dat je een wereldgrens instelt zodat je spelers geen nieuwe chunks genereren! Merk op dat het pregenereren soms uren kan duren, afhankelijk van de radius die je instelt in de pregen plugin.
Het is belangrijk om te onthouden dat de bovenwereld, de nether en het einde aparte wereldgrenzen hebben die voor elke wereld ingesteld moeten worden. De nether dimensie is 8 keer kleiner dan de overworld (indien niet aangepast met een datapack), dus als je de grootte verkeerd instelt, kunnen je spelers buiten de wereldgrens terechtkomen!
Zorg ervoor dat je een vanilla wereldgrens instelt (/worldborder set [radius]
), omdat het bepaalde functionaliteiten beperkt, zoals het opzoekbereik voor schatkaarten dat lag spikes kan veroorzaken.
Configuraties
Netwerken
server.properties
network-compression-threshold
Goede startwaarde: 256
Dit staat je toe om een maximum in te stellen voor de grootte van een pakket voordat de server het probeert te comprimeren. Hoger instellen kan wat CPU-bronnen besparen ten koste van bandbreedte, en op -1 zetten schakelt het uit. Hoger instellen kan ook cliënten met tragere netwerkverbindingen schaden. Als je server zich in een netwerk met een proxy bevindt of op dezelfde machine (met minder dan 2 ms ping), zal het uitschakelen (-1) voordelig zijn, aangezien interne netwerksnelheden gewoonlijk het extra ongecomprimeerde verkeer aankunnen.
purpur.yml
use-alternate-keepalive
Goede startwaarde: true
Je kunt Purpur's alternatieve keepalive systeem aanzetten, zodat spelers met een slechte verbinding niet zo vaak uitgetimed worden. Heeft bekende incompatibiliteit met TCPShield.
Het inschakelen hiervan stuurt een keer per seconde een keepalive pakket naar een speler, en kopt alleen voor timeout als er niet op gereageerd is binnen 30 seconden. Reageren op elk van deze in elke volgorde zal de speler verbonden houden. AKA, het zal je spelers niet kicken omdat 1 pakket ergens langs de lijnen is gevallen
~ https://purpur.pl3x.net/docs/Configuration/#use-alternate-keepalive
Chunks
spigot.yml
view-distance
Goede startwaarde: 4
View-distance is de afstand in chunks rond de speler die de server zal aanvinken. In essentie de afstand van de speler waarop dingen zullen gebeuren. Dit is inclusief ovens die smelten, gewassen en jonge boompjes die groeien, etc. Je moet deze waarde instellen in spigot.yml, omdat het die van [server.properties
] overschrijft en per wereld kan worden ingesteld. Dit is een optie die je bewust laag wilt zetten, ergens rond 3
of 4
, vanwege het bestaan van no-tick-view-distance
. No-tick staat spelers toe om meer stukken te laden zonder ze aan te vinken. Dit stelt spelers in staat om verder te kijken zonder dezelfde impact op de prestaties.
paper.yml
no-tick-view-distance
Goede startwaarde: 7
Deze optie maakt het mogelijk om de maximale afstand in brokken in te stellen die de spelers zullen zien. Dit maakt het mogelijk om een lagere view-distance
te hebben en spelers toch verder te laten kijken. Het is belangrijk om te weten dat de chunks die verder weg liggen dan de werkelijke view-distance
niet zullen worden aangevinkt, maar ze zullen wel worden geladen vanuit je opslag, dus ga niet te ver. 10
is in principe het maximum waar je dit op moet zetten. Vanaf nu worden chunks naar de client gestuurd ongeacht hun kijkafstand instelling, dus hogere waardes voor deze optie kunnen problemen veroorzaken voor spelers met langzamere verbindingen.
delay-chunk-unloads-by
Goede startwaarde: 10
Met deze optie kun je instellen hoe lang chunks geladen blijven nadat een speler is vertrokken. Dit helpt om niet constant dezelfde chunks te laden en te lossen als een speler heen en weer beweegt. Te hoge waarden kunnen resulteren in veel te veel chunks die in één keer geladen worden. In gebieden die vaak worden geteleporteerd en geladen, kun je overwegen om het gebied permanent geladen te houden. Dit zal lichter zijn voor je server dan het constant laden en lossen van chunks.
max-auto-save-chunks-per-tick
Goede startwaarde: 8
Hiermee kun je het incrementeel opslaan van de wereld vertragen door de taak nog meer over de tijd te spreiden voor een betere gemiddelde prestatie. Je zou dit hoger kunnen zetten dan 8
met meer dan 20-30 spelers. Als het incrementele opslaan niet op tijd kan worden voltooid, zal bukkit automatisch de overgebleven brokken in een keer opslaan en het proces opnieuw beginnen.
prevent-moving-into-unloaded-chunks
Goede startwaarde: true
Wanneer ingeschakeld, voorkomt dit dat spelers in onbeladen chunks lopen en sync loads veroorzaken die de main thread vertragen en lag veroorzaken. De kans dat een speler in een onbelaste chunk stapt, is groter naarmate de no-tick-view-afstand kleiner is.
entity-per-chunk-save-limit
Goede startwaarde:
experience_orb: 16
arrow: 16
dragon_fireball: 3
egg: 8
ender_pearl: 8
eye_of_ender: 8
fireball: 8
small_fireball: 8
firework_rocket: 8
potion: 8
llama_spit: 3
shulker_bullet: 8
snowball: 8
spectral_arrow: 16
experience_bottle: 3
trident: 16
wither_skull: 4
area_effect_cloud: 8
Met behulp van dit item kunt u grenzen instellen voor het aantal entiteiten van een bepaald type dat kan worden opgeslagen. Je zou op zijn minst een limiet moeten instellen voor elk projectiel om problemen te voorkomen met enorme hoeveelheden projectielen die worden opgeslagen en je server die crasht bij het laden. Je kan hier elke entiteit id zetten, zie de minecraft wiki om IDs van entiteiten te vinden. Pas de limiet aan naar je eigen smaak. Aanbevolen waarde voor alle projectielen is rond de 10
. Je kunt ook andere entiteiten toevoegen door hun type naam aan deze lijst toe te voegen. Deze configuratie optie is niet ontworpen om te voorkomen dat spelers grote mob farms maken.
seed-based-feature-search-loads-chunks
Goede startwaarde: true
Hoewel het instellen van dit op false
de performance zal verbeteren als je treasure-maps-return-already-discovered
op false
zet, kan het resulteren in onverwacht gedrag, zoals structuren die soms niet op de plek staan die op de kaart is aangegeven. Zet het aan als je het niet als een probleem ziet.
Mobs
bukkit.yml
spawn-limits
Goede startwaarde:
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
ambient: 1
De wiskunde van het limiteren van mobs is [playercount] * [limit]
, waar "playercount" het huidige aantal spelers op de server is. Logisch, hoe kleiner de aantallen zijn, hoe minder mobs je zult zien. per-speler-mob-spawn
past hier een extra limiet op toe, om ervoor te zorgen dat mobs gelijk verdeeld worden tussen spelers. Dit verminderen is een tweesnijdend zwaard; ja, je server heeft minder werk te doen, maar in sommige gamemodes zijn natuurlijk spawnende mobs een groot deel van de gameplay. Je kunt zo laag gaan als 20 of minder als je mob-spawn-range
goed instelt. Door mob-spawn-range
lager in te stellen zal het lijken alsof er meer mobs rond elke speler zijn. Als je Paper gebruikt, kun je mob-limieten per wereld instellen in [paper.yml
].
ticks-per
Goede startwaarde:
monster-spawn: 10
animal-spawns: 400
water-spawns: 400
water-ambient-spawns: 400
ambient-spawns: 400
Deze optie stelt in hoe vaak (in ticks) de server probeert om bepaalde levende wezens te spawnen. Water/ambient mobs hoeven niet elke tick te spawnen omdat ze meestal niet zo snel gedood worden. Wat monsters betreft: De tijd tussen spawns lichtjes verhogen zou geen invloed mogen hebben op de spawn rates, zelfs niet in mob farms. In de meeste gevallen zouden alle waardes onder deze optie hoger moeten zijn dan 1
. Door dit hoger te zetten kan je server ook beter omgaan met gebieden waar mob spawn is uitgeschakeld.
spigot.yml
mob-spawn-range
Goede startwaarde: 2
Staat je toe om het bereik (in brokken) te verkleinen van waar mobs zullen spawnen rond de speler. Afhankelijk van de gamemode van je server en het aantal spelers zou je deze waarde kunnen verlagen samen met bukkit.yml's spawn-limits
. Door dit lager in te stellen zal het lijken alsof er meer mobs om je heen zijn. Dit moet lager zijn dan of gelijk aan je zichtafstand, en nooit groter dan je harde despawn range / 16.
entity-activation-range
Goede startwaarde:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 48
Je kan instellen hoe ver een entiteit van de speler moet zijn om te tikken (dingen te doen). Het verlagen van deze waarden helpt de prestaties, maar kan resulteren in onresponsieve mobs totdat de speler echt dicht bij ze komt. Dit te ver verlagen kan bepaalde mob farms kapot maken; iron farms zijn het meest voorkomende slachtoffer.
entity-tracking-range
Goede startwaarde:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
Dit is de afstand in blokken vanaf waar entiteiten zichtbaar zullen zijn. Ze zullen alleen niet naar spelers worden gestuurd. Als je dit te laag instelt kan het lijken of een entiteit uit het niets verschijnt in de buurt van een speler. In de meeste gevallen zou dit hoger moeten zijn dan je entity-activatie-range
.
tick-inactive-villagers
Goede startwaarde: false
Hiermee kun je bepalen of dorpelingen moeten worden aangevinkt buiten het activeringsbereik. Dit zal ervoor zorgen dat dorpelingen normaal doorgaan en het activeringsbereik negeren. Het uitschakelen hiervan zal de prestaties verbeteren, maar kan verwarrend zijn voor spelers in bepaalde situaties. Dit kan problemen veroorzaken met ijzeren boerderijen en het herbevoorraden van handel.
nerf-spawner-mobs
Goede startwaarde: true
Je kunt ervoor zorgen dat mobs die gespawned worden door een monster spawner geen AI hebben. Nerfed mobs zullen niets doen. Je kan ze laten springen in water door spawner-nerfed-mobs-should-jump
te veranderen in true
in paper.yml.
paper.yml
despawn-ranges
Goede start waarden:
soft: 30
hard: 56
Hiermee kun je de entiteit despawn bereiken aanpassen (in blokken). Verlaag deze waarden om de mobs die ver weg zijn van de speler sneller te verwijderen. Je zou de soft range rond de 30 moeten houden en de hard range iets meer dan je eigenlijke view-distance, zodat mobs niet meteen despawnen als de speler net voorbij het punt gaat waar een chunk geladen wordt (dit werkt goed door de delay-chunk-unloads-by
in paper.yml). Wanneer een mob buiten het harde bereik is, zal deze direct despawned worden. Wanneer tussen de zachte en harde range, zal het een willekeurige kans hebben om te despawnen. Je harde bereik moet groter zijn dan je zachte bereik. Je moet dit aanpassen aan je zichtafstand door (zichtafstand * 16) + 8
te gebruiken. Dit houdt gedeeltelijk rekening met chunks die nog niet uitgeladen zijn nadat de speler ze bezocht heeft.
per-player-mob-spawns
Goede startwaarde: true
Deze optie bepaalt of mob spawns rekening moeten houden met hoeveel mobs er al rond de speler zijn. Je kunt hiermee veel problemen omzeilen met betrekking tot mob spawns die inconsistent zijn doordat spelers farms maken die de hele mobcap in beslag nemen. Dit zal een meer singleplayer-achtige spawn ervaring mogelijk maken, waardoor je lagere spawn-limieten
kunt instellen. Het inschakelen hiervan heeft een klein effect op de prestaties, maar het effect wordt overschaduwd door de verbeteringen in spawn-limits
die het mogelijk maakt.
max-entity-collisions
Goede startwaarde: 2
Overschrijft optie met dezelfde naam in spigot.yml. Het laat je beslissen hoeveel botsingen een entiteit in een keer kan verwerken. Waarde van 0
veroorzaakt het onvermogen om andere entiteiten, inclusief spelers, te duwen. Waarde van 2
zou genoeg moeten zijn in de meeste gevallen. Het is de moeite waard om op te merken dat dit maxEntityCramming gamerule nutteloos maakt als zijn waarde hoger is dan de waarde van deze configuratie optie.
update-pathfinding-on-block-update
Goede startwaarde: false
Het uitschakelen hiervan zal resulteren in minder pathfinding, wat de performance zal verhogen. In sommige gevallen zal dit ervoor zorgen dat mobs meer laggy lijken; Ze zullen gewoon passief hun pad updaten elke 5 ticks (0.25 sec).
fix-climbing-bypassing-cramming-rule
Goede startwaarde: true
Door dit in te schakelen worden entiteiten die klimmen niet beïnvloed. Dit zal voorkomen dat absurde hoeveelheden mannetjes worden gestapeld in kleine ruimtes zelfs als ze klimmen (spinnen).
armor-stands-tick
Goede startwaarde: false
In de meeste gevallen kun je dit veilig op false
zetten. Als je armor stands gebruikt of plugins die hun gedrag aanpassen en je ondervindt problemen, schakel dit dan weer in. Dit zal voorkomen dat armor stands worden geduwd door water of worden beïnvloed door de zwaartekracht.
armor-stands-do-collision-entity-lookups
Goede startwaarde: false
Hier kun je armor stand collisions uitschakelen. Dit zal helpen als je veel armorstands hebt en ze nergens tegenaan wilt laten botsen.
tick-rates
Goede startwaarde:
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
Dit bepaalt hoe vaak gespecificeerde gedragingen en sensoren worden afgevuurd in tikken. acquirepoi
voor dorpelingen schijnt het zwaarste gedrag te zijn, dus is het sterk verhoogd. Verlaag het in het geval van problemen met dorpelingen die hun weg niet kunnen vinden.
airplane.yml
max-loads-per-projectile
Goede startwaarde: 8
Specificeert het maximum aantal chunks dat een projectiel kan laden tijdens zijn levensduur. Verminderen zal de chunkbelasting door entiteitprojectielen verminderen, maar kan problemen veroorzaken met tridents, enderpearls, enz.
max-tick-freq
Goede startwaarde: 20
Deze optie bepaalt hoe langzaam entiteiten die het verst van spelers af staan getickt zullen worden. Het verhogen van deze waarde kan de prestaties verbeteren van entiteiten die ver uit het zicht staan, maar kan farms kapot maken of het gedrag van mobs sterk verminderen.
activation-dist-mod
Goede startwaarde: 7
Regelt de gradiënt waarin mobs worden aangevinkt. DAB werkt op een gradiënt in plaats van een harde afsnijding zoals EAR. In plaats van entiteiten dicht bij volledig aan te vinken en entiteiten veraf nauwelijks, zal DAB de hoeveelheid van een entiteit die wordt aangevinkt verminderen gebaseerd op het resultaat van deze berekening. Dit verlagen zal DAB dichter bij de spelers activeren, wat de prestatiewinst van DAB verbetert, maar zal invloed hebben op hoe entiteiten met hun omgeving omgaan en kan mob farms kapot maken.
purpur.yml
dont-send-useless-entity-packets
Goede startwaarde: true
Door deze optie in te schakelen bespaar je bandbreedte door te voorkomen dat de server lege positiewijzigingspakketten verstuurt (standaard verstuurt de server dit pakket voor elke entiteit, zelfs als de entiteit niet is verplaatst). Dit kan problemen veroorzaken met plugins die cliëntzijde entiteiten gebruiken.
aggressive-towards-villager-when-lagging
Goede startwaarde: false
Als je dit inschakelt zullen zombies stoppen met het aanvallen van dorpelingen als de server onder de tps drempel zit die is ingesteld met lagging-threshold
in purpur.yml.
entities-can-use-portals
Goede startwaarde: false
Deze optie kan het gebruik van portalen uitschakelen voor alle entiteiten behalve de speler. Dit voorkomt dat entiteiten chunks laden door van wereld te veranderen, wat wordt afgehandeld op de hoofddraad. Dit heeft als neveneffect dat entiteiten niet door portalen kunnen gaan.
villager.brain-ticks
Goede startwaarde: 2
Met deze optie kun je instellen hoe vaak (in tikken) de hersenen van een dorpeling (werk en poi) zullen tikken. Hoger dan 3
is bevestigd dat dorpelingen inconsistent/buggy worden.
villager.lobotomize
Goede startwaarde: true
Lobotomize dorpelingen worden ontdaan van hun AI en zullen alleen om de zoveel tijd hun aanbod aanvullen. Door dit in te schakelen zullen dorpelingen die niet in staat zijn om hun bestemming te vinden, gelobotomiseerd worden. Hen bevrijden zou hen weer moeten lobotomiseren.
Misc
spigot.yml
merge-radius
Goede start waarden:
item: 3.5
exp: 4.0
Dit bepaalt de afstand tussen de items en exp orbs die worden samengevoegd, waardoor er minder items op de grond tikken. Als je dit te hoog instelt zal dit leiden tot de illusie dat items of exp orbs verdwijnen als ze samengevoegd worden. Als je dit te hoog instelt, zullen sommige boerderijen kapot gaan, en zullen items door blokken kunnen teleporteren. Er worden geen controles uitgevoerd om te voorkomen dat items door muren heen samensmelten. Exp wordt alleen samengevoegd bij het aanmaken.
hopper-transfer
Goede startwaarde: 8
Tijd in tikken dat hoppers zullen wachten om een item te verplaatsen. Het verhogen van deze tijd zal de performance verbeteren als er veel hoppers op je server zijn, maar zal hopper-gebaseerde klokken en mogelijk item sorteer systemen breken als het te hoog is ingesteld.
hopper-check
Goede startwaarde: 8
Tijd in tikken tussen hoppers die controleren op een item boven hen of in de inventaris boven hen. Het verhogen van deze tijd zal de performance verbeteren als er veel hoppers op je server zijn, maar zal hopper-gebaseerde klokken en item sorteer systemen die vertrouwen op waterstromen breken.
paper.yml
alt-item-despawn-rate
Goede start waarden:
enabled: true
items:
COBBLESTONE: 300
NETHERRACK: 300
SAND: 300
RED_SAND: 300
GRAVEL: 300
DIRT: 300
GRASS: 300
PUMPKIN: 300
MELON_SLICE: 300
KELP: 300
BAMBOO: 300
SUGAR_CANE: 300
TWISTING_VINES: 300
WEEPING_VINES: 300
OAK_LEAVES: 300
SPRUCE_LEAVES: 300
BIRCH_LEAVES: 300
JUNGLE_LEAVES: 300
ACACIA_LEAVES: 300
DARK_OAK_LEAVES: 300
CACTUS: 300
DIORITE: 300
GRANITE: 300
ANDESITE: 300
SCAFFOLDING: 600
Met deze lijst kun je een alternatieve tijd instellen (in ticks) om bepaalde soorten gedropte items sneller of langzamer te laten verdwijnen dan standaard. Deze optie kan gebruikt worden in plaats van item clearing plugins samen met merge-radius
om de performance te verbeteren.
use-faster-eigencraft-redstone
Goede startwaarde: true
Wanneer dit is ingeschakeld, wordt het redstone systeem vervangen door een snellere en alternatieve versie die overbodige blokupdates vermindert, waardoor je server minder werk hoeft te doen. Door dit in te schakelen kun je de prestaties aanzienlijk verbeteren zonder inconsistenties in de gameplay te introduceren. Het inschakelen hiervan zal zelfs sommige redstone inconsistenties van craftbukkit oplossen.
disable-move-event
Goede startwaarde: false
InventoryMoveItemEvent
gaat niet af, tenzij er een plugin is die actief luistert naar dat event. Dit betekent dat je dit alleen op true moet zetten als je zulke plugin(s) hebt en het niet erg vindt dat ze niet kunnen reageren op dit event. Zet dit niet op true als je plugins wilt gebruiken die naar deze gebeurtenis luisteren, b.v. beschermingsplugins!
mob-spawner-tick-rate
Goede startwaarde: 2
Deze optie laat je configureren hoe vaak spawners moeten worden aangevinkt. Hogere waarden betekenen minder vertraging als je veel spawners hebt, maar als je deze te hoog instelt (in verhouding tot de vertraging van je spawners) zal de snelheid waarmee mob spawnt afnemen.
optimize-explosions
Goede start waarde: true
Als je dit op true
zet wordt het vanilla explosie algoritme vervangen door een sneller algoritme, ten koste van een kleine onnauwkeurigheid bij het berekenen van de explosie schade. Dit is meestal niet merkbaar.
enable-treasure-maps
Goede startwaarde: false
Het genereren van schatkaarten is erg zwaar en kan een server laten hangen als het gebouw dat het probeert te lokaliseren buiten je voorgegenereerde wereld ligt. Het is alleen veilig om dit aan te zetten als je je wereld hebt voorgegenereerd en een vanilla wereldgrens hebt ingesteld.
treasure-maps-return-already-discovered
Goede startwaarde: true
De standaardwaarde van deze optie dwingt de nieuw gegenereerde kaarten om te zoeken naar onontdekte structuren, die meestal buiten je voorgegenereerde terrein liggen. Door dit op true te zetten, kunnen kaarten leiden naar de structuren die eerder ontdekt zijn. Als je dit niet op true
zet kan het zijn dat de server blijft hangen of crasht bij het genereren van nieuwe schatkaarten.
grass-spread-tick-rate
Goede startwaarde: 4
Tijd in tikken tussen het moment dat de server gras of mycelium probeert te verspreiden. Dit zorgt ervoor dat grote stukken vuil er iets langer over doen om in gras of mycelium te veranderen. Dit instellen op ongeveer 4
zou goed moeten werken als je het wilt verminderen zonder dat de verminderde verspreiding merkbaar is.
container-update-tick-rate
Goede startwaarde: 1
Tijd in ticks tussen container updates. Dit verhogen kan helpen als container updates problemen veroorzaken (dit gebeurt zelden), maar maakt het makkelijker voor spelers om desync te ervaren bij interactie met inventarissen (spook items).
non-player-arrow-despawn-rate
Goede startwaarde: 20
Tijd in tikken waarna pijlen afgeschoten door mobs moeten verdwijnen nadat ze iets geraakt hebben. Spelers kunnen deze pijlen toch niet oppakken, dus je kunt dit net zo goed instellen op iets als 20
(1 seconde).
creative-arrow-despawn-rate
Goede startwaarde: 20
Tijd in tikken waarna pijlen die door spelers in de creatieve modus zijn afgeschoten moeten verdwijnen nadat ze iets hebben geraakt. Spelers kunnen deze pijlen toch niet oppakken, dus je kunt dit net zo goed instellen op iets als 20
(1 seconde).
purpur.yml
disable-treasure-searching
Goede startwaarde: true
Voorkomt dat dolfijnen structuurzoeken uitvoeren die lijken op schatkaarten
teleport-if-outside-border
Goede startwaarde: true
Maakt het mogelijk om de speler te teleporteren naar de spawn als hij buiten de wereldgrens is. Handig omdat de vanilla wereldgrens te omzeilen is en de schade die het aan de speler toebrengt kan worden beperkt.
Helpers
paper.yml
anti-xray
Goede startwaarde: true
Schakel dit in om ertsen te verbergen voor x-rayers. Voor gedetailleerde configuratie van deze functie, zie Stonar96's aanbevolen instellingen. Het inschakelen hiervan zal de prestatie verminderen, maar het is veel efficiënter dan een anti-xray plugin. In de meeste gevallen zal de prestatie-impact te verwaarlozen zijn.
remove-corrupt-tile-entities
Goede startwaarde: true
Verander dit naar true
als je console wordt overspoeld met fouten over tile-entiteiten. Dit zal alle tile-entiteiten die de fout veroorzaken verwijderen in plaats van negeren. Als u regelmatig waarschuwingen krijgt over tile entiteiten, onderzoek dan waarom ze breken. Dit is geen oplossing voor het hoofdprobleem.
nether-ceiling-void-damage-height
Goede startwaarde: 127
Als deze optie groter is dan 0
, zullen spelers boven het ingestelde y-niveau beschadigd worden alsof ze in de leegte staan. Dit zal voorkomen dat spelers het nether dak gebruiken. De vanilla nether is 128 blokken hoog, dus je moet hem waarschijnlijk op 127
zetten. Als je de hoogte van de nether op een of andere manier aanpast, moet je dit instellen op [jouw_nether_hoogte] - 1
.
Java opstartvlaggen
Vanilla Minecraft en Minecraft server software in versie 1.17 vereist Java 16 of hoger. Oracle heeft hun licenties veranderd, en er is niet langer een dwingende reden om je Java van hen te krijgen. Aanbevolen verkopers zijn Amazon Corretto en Adoptium. Alternatieve JVM-implementaties zoals OpenJ9 of GraalVM kunnen werken, maar ze worden niet ondersteund door paper en staan erom bekend dat ze problemen veroorzaken, daarom worden ze momenteel niet aanbevolen.
Je garbage collector kan geconfigureerd worden om vertragingspieken veroorzaakt door grote garbage collector taken te verminderen. Je kunt hier SOG
opstartvlaggen vinden die geoptimaliseerd zijn voor Minecraft servers. Houd in gedachten dat deze aanbeveling niet zal werken op alternatieve jvm implementaties.
Linux CPU-schaling
Sommige hosts kunnen machines leveren die in "PowerSave" mode draaien. Dit kan leiden tot bijna 25% lagere kloksnelheden en dus veel lagere single threaded prestaties. Dit kan leiden tot veel slechtere prestaties dan wanneer de CPU-schaling op prestatiemodus wordt gezet. Merk op dat dit mogelijk niet beschikbaar is voor VPS.
Voor Debian / Ubuntu
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Toont het prestatieprofiel van de CPU.
echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Stelt het profiel in op performance.
"Te mooi om waar te zijn" plugins
Plugins die gronditems verwijderen
Absoluut onnodig omdat ze vervangen kunnen worden door merge-radius en alt-item-despawn-rate en eerlijk gezegd zijn ze minder configureerbaar dan basis server configs. Ze hebben de neiging om meer middelen te gebruiken voor het scannen en verwijderen van items dan voor het helemaal niet verwijderen van de items.
Mob stacker plugins
Het is echt moeilijk om het gebruik ervan te rechtvaardigen. Het stapelen van natuurlijk gespawnde entiteiten veroorzaakt meer vertraging dan ze helemaal niet te stapelen doordat de server constant probeert meer mobs te spawnen. De enige "aanvaardbare" gebruikssituatie is voor spawners op servers met een groot aantal spawners.
Plugins die andere plugins in- of uitschakelen
Alles dat plugins in- of uitschakelt tijdens runtime is extreem gevaarlijk. Het laden van zo'n plugin kan fatale fouten veroorzaken met tracking data en het uitschakelen van een plugin kan leiden tot fouten door het verwijderen van dependency. Het /reload
commando lijdt aan exact dezelfde problemen en je kunt er meer over lezen in me4502's blog post
Wat is er aan het vertragen? - het meten van prestaties
mspt
Paper biedt een /mspt
commando dat je vertelt hoeveel tijd de server nodig had om recente ticks te berekenen. Als de eerste en tweede waarde die je ziet lager zijn dan 50, dan gefeliciteerd! Uw server is niet traag! Als de derde waarde boven de 50 is, betekent dit dat er minstens 1 tick langer over deed. Dat is volkomen normaal en gebeurt van tijd tot tijd, dus geen paniek.
timings
Een goede manier om te zien wat er aan de hand kan zijn als je server lagging vertoont zijn timings. Timing is een tool waarmee je precies kunt zien welke taken het langst duren. Het is de meest elementaire tool om problemen op te lossen en als je om hulp vraagt met betrekking tot lag, zul je waarschijnlijk om je timings worden gevraagd.
Om de timings van je server te krijgen hoef je alleen maar het /timings paste
commando uit te voeren en op de link te klikken die je krijgt. Je kunt deze link delen met andere mensen zodat ze je kunnen helpen. Het is ook gemakkelijk om verkeerd te lezen als je niet weet wat je doet. Er is een gedetailleerde video tutorial door Aikar over hoe je ze moet lezen.
spark
Spark is een plugin die je toelaat om je servers CPU en geheugengebruik te profileren. Je kunt lezen hoe het te gebruiken op zijn wiki. Er is ook een gids over hoe je de oorzaak van lag spikes kunt vinden hier.
Veel voorkomende valkuilen en beste aanpak
In dit artikel worden veelvoorkomende valkuilen toegelicht waarmee eigenaars van servers te maken krijgen.
Always backup
Er zijn twee soorten mensen – zij die back-ups maken, en zij die back-ups gaan maken. Het is gewoon een kwestie van tijd wanneer je dataverlies ervaart. Maak altijd kopieën om te voorkomen dat u uw wereld- of plugin-gegevens verliest. Je kan dit toepassen op elke computer gerelateerde workflow, niet alleen Minecraft.
Gebruik geen verouderde software
Door verouderde softwareversies te gebruiken, riskeer je dat spelers ongepatchte exploits misbruiken, inclusief item duplicatie (oneindige items). Het voegt ook een ongemakkelijkheidsfactor toe aangezien je spelers specifiek hun client versie moeten downgraden om overeen te komen met je server. Dit kan omzeild worden door een protocol hack te gebruiken, maar het is niet ideaal.
Bukkit/Spigot niet meer gebruiken
Bukkit en Spigot staan in principe in onderhoudsmodus. Ze updaten elke keer als er een nieuwe versie is en als er een kritieke exploit wordt gevonden, maar ze voegen geen prestatie-updates toe. Dit betekent dat eventuele prestatieproblemen die u ondervindt met deze software nooit zullen worden verbeterd. Om dat te vermijden, upgrade naar Paper, Tuinity of Purpur. Bukkit/Spigot plugins zullen net zo goed (misschien zelfs beter) werken met de server software die vermeld staat. Als ze dat niet doen, dan is het veilig om aan te nemen dat de plugin dev ofwel dingen doet die ze niet zouden moeten doen ofwel nalatig is geweest in het maken van hun plugin. Ze voegen ook optimalisatie patches toe zoals een chunk laadsysteem dat gebruik kan maken van meerdere CPU-threads of een instelling die de server toestaat om minder chunks aan te vinken dan het daadwerkelijk naar de speler stuurt.
Vermijd datapacks die commando functies gebruiken
Datapacks die commando's uitvoeren zijn extreem laggy. Het is misschien niet veel met een paar spelers op, maar dat schaalt niet goed met het aantal spelers en zal je server vrij snel vertragen als je meer spelers krijgt. Datapacks die biomes, buitentabellen, enz. veranderen zijn prima. Je bent beter af met het zoeken naar een plugin alternatief.
Kiezen van hardware
Ga niet alleen uit van hoeveel RAM je nodig hebt. Je moet je in plaats daarvan concentreren op wat voor soort CPU je zou moeten gebruiken, aangezien de CPU het belangrijkste onderdeel van de server is. Je wilt iets wat goed scoort op single core prestaties, aangezien een server voornamelijk draait op één thread. Meervoudige threads worden echter al geruime tijd gebruikt in systemen zoals async chunk loading in paper.
Harde schijven (HDD's) moet je absoluut vermijden. Hun snelheden zijn gewoon veel te traag om het te rechtvaardigen om er een server op te draaien, aangezien Minecraft zwaar is op I/O operaties (vooral met hoge view afstanden en hogere speler aantallen). Een Solid State drive (SSD) is een veel betere keuze vanwege zijn veel snellere I/O.
Copyright
All copyright for this translated guide lies with the original author YouHaveTrouble and PlanetNode. We have especially asked YouHaveTrouble for permission to translate this guide. We got permission if we will keep this fork up to date with the changes upstream. What we will do, of course. We translated this guide for our blog so don't copy our translated version but rather link to our version or the English counterpart.
Alle copyright voor deze vertaalde gids ligt bij de originele auteur YouHaveTrouble en PlanetNode. We hebben YouHaveTrouble speciaal om toestemming gevraagd om deze gids te vertalen. We hebben toestemming gekregen als we deze fork up-to-date houden met de veranderingen stroomopwaarts. Wat we zullen doen, natuurlijk. We hebben deze gids vertaald voor onze blog dus kopieer onze vertaalde versie niet maar link liever naar onze versie of de Engelse tegenhanger.