Prejsť na obsah
Aktuálny kupón:zľava 10 %Uplatniť v objednávke

Výkon Minecraft servera: lagy, parametre, view distance, Chunky a spark

Ako zistiť, čo server spomaľuje, a ako to opraviť: TPS a MSPT, spúšťacie parametre a pamäť, vzdialenosť vykresľovania, nastavenia Paperu, predgenerovanie sveta s Chunky a profilovanie cez spark.

  • pokročilý
  • ~40 min
  • Aktualizované 9. 10. 2026

Server, ktorý „seká“, väčšinou netrpí nedostatkom hardvéru, ale jednou konkrétnou príčinou: príliš veľkou vzdialenosťou simulácie, generovaním nového terénu, preplnenou farmou alebo zle napísaným pluginom. Ukážeme, ako lag zmerať, nájsť jeho príčinu a opraviť ju – od rýchlych úprav po nastavenia Paperu a profilovanie.

Čo budete potrebovať

  • Minecraft server u StormHostu (Paper alebo Purpur odporúčame; časť návodu platí aj pre Fabric a NeoForge)
  • Prístup do záložiek Konzola, Nastavenia servera, Spustenie a Súbory
  • Záloha servera pred úpravou konfigurácie (návod)
  • Asi 40 minút

Ako zistiť, čo laguje#

Minecraft server počíta hru v tickoch. Za sekundu ich má stihnúť 20, na jeden tick má teda 50 milisekúnd. Dve čísla, ktoré potrebujete poznať:

HodnotaČo znamenáDobreProblém
TPS (ticks per second)Koľko tickov server za sekundu skutočne stihne.20Pod 19 hráči cítia spomalenie, pod 15 je hra nepríjemná.
MSPT (milliseconds per tick)Koľko milisekúnd trvá jeden tick.Pod 50 ms, ideálne pod 35 msNad 50 ms server nestíha a TPS klesá.

MSPT je presnejší ukazovateľ: server s MSPT 45 ms má stále TPS 20, ale nemá žiadnu rezervu. Keď MSPT prelezie 50 ms, TPS začne klesať.

Hodnoty zistíte v Konzole (príkazy píšete bez lomky):

text
tps
mspt
spark tps
  • tps – priemerné TPS za posledných 1, 5 a 15 minút (Paper, Purpur).
  • mspt – priemerný, najkratší a najdlhší čas ticku (Paper, Purpur).
  • spark tps – TPS, MSPT (minimum, medián, 95. percentil, maximum) a vyťaženie procesora. Funguje všade, kde je spark (Paper ho má vstavaný).

Keď server dlhodobo nestíha, objaví sa v konzole:

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

Server tým hovorí, že je 2,5 sekundy (50 tickov) pozadu a ticky preskočí. Jedna hláška pri štarte alebo pri generovaní terénu neprekáža. Ak sa opakuje každých pár minút, pokračujte týmto návodom.

Lag servera, alebo niečo iné?#

Čo hráč vidíPríčinaKde hľadať
Bloky sa po vybúraní vracajú, moby sa zasekávajú, všetci hráči majú rovnaký problémLag servera (nízke TPS)Tento návod
Nízke FPS, trhaný obraz, ale ostatní hráči sú v poriadkuVýkon počítača hráčaNastavenia grafiky v hre, mody pre klienta
Hráč sa „teleportuje“ späť, vysoký ping iba u nehoPripojenie hráčaPing hráča príkazom spark ping --player <NICK>
Server je v poriadku, ale nové oblasti sa načítavajú pomalyGenerovanie terénuPredgenerovanie s Chunky

Rýchle výhry#

Zoradené od najväčšieho účinku k menšiemu. Väčšinu zvládnete do desiatich minút.

PoradieKrokPrečo pomôžeKde
1Používajte Paper alebo Purpur namiesto VanillyPaper obsahuje stovky optimalizácií a opravy chýb, s ktorými Vanilla nepočíta.Záložka Softvér, pozrite Typy serverov
2Predgenerujte svet a nastavte jeho okrajGenerovanie nového terénu je najnáročnejšia operácia servera.Chunky
3Znížte simulation-distance na 6–⁠8 a view-distance na 8Menej chunkov na hráča = menej práce v každom ticku.View a simulation distance
4Nájdite príčinu profileromUkáže konkrétny plugin, farmu alebo entitu.spark
5Obmedzte entity a farmyStovky zvierat v jednej ohrade alebo preplnená farma zabijú TPS.Nastavenia Paperu
6Ponechajte predvolené spúšťacie parametrePredvolený preset je vyladený na veľkosť vašej pamäte.Spúšťacie parametre
7Aktualizujte server, pluginy a modyNové verzie často opravujú úniky pamäte a pomalé časti kódu.Záložka Softvér a Pluginy

Pluginy na „čistenie lagu“

Pluginy, ktoré sľubujú zázračné zrýchlenie (pravidelné mazanie predmetov na zemi, „vyčistenie RAM“, vynútené volanie garbage collectora), problém neriešia. Mažú hráčom veci, často spôsobujú sekanie a príčinu iba schovajú. Nájdite skutočnú príčinu cez spark.

Spúšťacie parametre a pamäť#

Parametre (flagy) sú voľby, s ktorými sa spúšťa Java. Určujú veľkosť pamäte pre hru (halda, heap), stropy pamäte mimo haldy a správanie garbage collectora, ktorý z pamäte upratuje nepotrebné dáta. V zákazníckej zóne ich nájdete v záložke Spustenie, v časti Spúšťacie parametre.

Haldu a stropy počíta zákaznícka zóna sama podľa veľkosti balíka, typu servera, verzie Javy a počtu pluginov alebo modov. Prepočíta ich pri založení servera, po zmene balíka, po zmene typu alebo verzie a pred štartom z portálu, keď sa odvtedy niečo z toho zmenilo. Spúšťací príkaz, ktorý ste upravili ručne v paneli alebo nastavili ako vlastný, neprepisuje. Keď má taký príkaz haldu väčšiu, než menší balík unesie, server po zmene balíka nespustíme (hneď by spadol) a napíšeme vám e-mail.

VoľbaČo robíKedy použiť
Preset – Odporúčané (G1)Garbage collector G1 s nastavením podľa dokumentácie Paperu. Predvolený pre všetky typy serverov.Väčšina serverov.
Preset – Nízke pauzy (ZGC)Garbage collector s veľmi krátkymi pauzami za cenu vyššieho vyťaženia procesora. Iba Java 21 a novšia.Veľké servery od 16 GB, keď spark gc ukazuje dlhé pauzy a procesor má rezervu.
Preset – ProxyParametre pre Velocity a BungeeCord.Ponúka sa iba pri proxy serveroch.
Preset – Bez ladeniaIba veľkosť haldy a pamäťové stropy.Dočasne pri hľadaní chyby, či ju nespôsobujú parametre.
Vlastné parametreDoplnkové parametre. Povolené sú iba -XX:…, -D…=… a --add-modules=…, najviac 30. Haldu nastaviť nemožno. Strop sieťových bufferov (-XX:MaxDirectMemorySize), skompilovaného kódu (-XX:ReservedCodeCacheSize) a načítaných tried (-XX:MaxMetaspaceSize) áno, halda sa potom prepočíta.Keď vám návod pluginu alebo modu povie o konkrétnu vlastnosť -D, alebo keď plugin pre hlasový chat potrebuje viac sieťových bufferov.

Všetky presety majú rovnaké poistky: strop sieťových bufferov, skompilovaného kódu a načítaných tried, MALLOC_ARENA_MAX=2 (menej pamäťových arén alokátora) a od Javy 17 -XX:TrimNativeHeapInterval (vracia nevyužitú pamäť systému). Purpur navyše automaticky dostane --add-modules=jdk.incubator.vector (rýchlejšie výpočty, ktoré Purpur vie využiť).

Tlačidlá v tejto časti:

  • Uložiť – nastavenie sa použije pri ďalšom štarte.
  • Uložiť a reštartovať – server sa hneď reštartuje. Keď s novými parametrami nenaštartuje, zákaznícka zóna ich sama vráti a uvidíte hlášku Parametre nie sú kompatibilné, vrátené na predchádzajúce nastavenie.
  • Vrátiť predchádzajúce – vráti posledné funkčné nastavenie.
  • Použiť odporúčané – objaví sa, keď je halda na balík príliš veľká alebo spúšťací príkaz nemá stropy pamäte. Nastaví odporúčaný príkaz.
  • Prepočítať teraz – prepočíta parametre hneď, nemusíte čakať na ďalší štart z portálu.

Pod voľbou Rozdelenie pamäte uvidíte, koľko dostane halda a koľko zostáva pre ostatné časti. Po automatickom prepočte zákaznícka zóna ukáže napríklad Spúšťací príkaz sme upravili podľa novej veľkosti RAM: halda 8,2 → 9,6 GB.

Server mimo StormHostu? Štartovací skript s rovnakým výpočtom pre Docker, Linux aj Windows vytvorí Generátor štartovacieho skriptu.

Prečo halda nie je celá RAM#

Halda (-Xmx) sama seba neprerastie. Rastie pamäť mimo haldy: sieťové buffery, načítané triedy pluginov a modov, skompilovaný kód, vlákna a alokátor systému. Najviac sieťové buffery – bez stropu smú narásť až do veľkosti haldy, takže server s haldou 6 GB môže skončiť na 12 GB.

Kontajner servera má tvrdý limit o 5 % vyšší než balík (pri balíkoch do 4 GB o 10 %, do 2 GB o 15 %) a nemá swap. Keď proces limit prekročí, systém ho ukončí. V Konzole sa objaví Out of memory: true, v logu servera žiadna chyba nie je.

Preto má každá veľká časť mimo haldy strop, všetko sa sčíta s rezervou pod veľkosť balíka a halda dostane zvyšok. Keď niektorá časť narazí na strop, server namiesto tichého pádu zapíše do logu chybu (OutOfMemoryError: Direct buffer memory alebo Metaspace), podľa ktorej sa dá nájsť vinník.

Pamäť balíkaHalda (Paper, 20 pluginov)Halda (modpack, 200 modov)Limit kontajnera
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

Halda má minimálnu aj maximálnu veľkosť rovnakú (-Xms = -Xmx) a zaberie sa hneď pri štarte. Graf pamäte v paneli preto ukazuje vysoké číslo od začiatku. Panel navyše počíta aj vyrovnávaciu pamäť súborov sveta, ktorú systém v prípade potreby uvoľní. Číslo blízko limitu samo osebe pád neznamená.

Dokumentácia Paperu odporúča na serveri aspoň 6–⁠10 GB haldy bez ohľadu na počet hráčov a varuje, že viac pamäte nad určitú hranicu výkon nezvýši.

Kedy je čas na väčší balík

Ak spark health ukazuje haldu trvalo nad 90 % aj po upratovaní (spark gc hlási časté a dlhé pauzy), a pritom ste vylúčili úniky pamäte v pluginoch, server potrebuje viac pamäte. Väčší balík nastavíte v záložke Zmena balíka (návod). Parametre sa po upgrade prepočítajú samy, prejavia sa pri ďalšom štarte.

View a simulation distance#

Svet je rozdelený na chunky (stĺpce 16 × 16 blokov). Server okolo každého hráča drží načítané chunky v určitom okruhu:

  • view-distance – koľko chunkov okolo hráča server posiela do hry (čo hráč vidí). Ovplyvňuje hlavne pamäť a sieť.
  • simulation-distance – v akom okruhu chunky „žijú“: pohybujú sa moby, rastie obilie, funguje redstone a farmy. Ovplyvňuje hlavne procesor, teda TPS.

Počet chunkov rastie s druhou mocninou vzdialenosti. Pri view-distance=10 drží server okolo každého hráča 441 chunkov, pri 8 iba 289 (o tretinu menej). Pri simulácii je efekt rovnaký.

Situáciaview-distancesimulation-distance
Malý server s kamarátmi, bez lagu1010
Verejný survival, 20+ hráčov8–⁠106–⁠8
Server laguje a neviete prečo86
Minihry, lobby6–⁠84–⁠6

Nastavíte ich v záložke Nastavenia servera v skupine Svet (všetky nastavenia). Simuláciu pod 5 neodporúčame – väčšie farmy potom prestanú fungovať, pretože časť farmy je mimo simulovanej oblasti.

Paper a jednotlivé svety

Na Paperi možno vzdialenosti nastaviť aj pre každý svet zvlášť v súbore spigot.yml (world-settings › default › view-distance a simulation-distance). Hodnota default znamená „použi server.properties“.

Nastavenia Paperu#

Paper a Purpur majú vlastnú konfiguráciu v priečinku config:

SúborČo obsahuje
config/paper-global.ymlNastavenia celého servera (proxy, načítanie chunkov, limity spamu).
config/paper-world-defaults.ymlPredvolené nastavenia pre všetky svety. Tu sa ladí výkon.
world/dimensions/minecraft/<dimenze>/paper-world.ymlVýnimky pre jednu dimenziu (od verzie 26.1; <dimenze> je overworld, the_nether alebo the_end). V starších verziách súbor paper-world.yml v priečinku sveta, napríklad world_nether/paper-world.yml.

Upravujte vždy paper-world-defaults.yml. Súbor otvorte v záložke Súbory v editore, nájdite existujúcu sekciu (napríklad chunks:) a zmeňte hodnotu v nej. Nevkladajte rovnakú sekciu druhýkrát – duplicitný kľúč server buď odmietne načítať, alebo použije iba jeden z nich a vaša zmena sa neprejaví.

Pravidlá YAML

Odsadenie iba medzerami (nikdy tabulátorom), rovnaké odsadenie na rovnakej úrovni, za dvojbodkou medzera. Pred úpravou urobte zálohu. Po úprave server reštartujte – príkaz paper reload neodporúčame, niektoré hodnoty sa načítavajú iba pri štarte.

Vybrané nastavenia s najväčším vplyvom na výkon:

NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
chunks.prevent-moving-into-unloaded-chunksNepustí hráča do chunku, ktorý ešte nie je načítaný (rýchle lietanie na elytre, jazda vozíkom). Server potom nemusí načítavať chunky „nasilu“ uprostred ticku.truePredvolené false. Zapnite na serveroch s elytrami a rýchlym cestovaním.
chunks.entity-per-chunk-save-limitKoľko entít daného typu sa v jednom chunku uloží. Chráni pred chunkmi zahltenými tisíckami šípov alebo skúseností.arrow: 16, experience_orb: 16, snowball: 8, ender_pearl: 8, fireball: 8, small_fireball: 8Predvolene bez limitu (-1). Nedávajte sem zvieratá ani moby – zvyšok by pri uložení zmizol.
collisions.max-entity-collisionsPo koľkých kolíziách entita prestane počítať ďalšie zrážky.2Predvolené 8. Nižšia hodnota výrazne uľaví miestam, kde sa tlačí mnoho mobov. Moby v dave sa potom menej odstrkujú – ak tým prestane fungovať niektorá farma, vráťte hodnotu vyššie.
environment.optimize-explosionsZrýchli výpočet výbuchov (TNT, creepery).truePredvolené false. Zapnite vždy, výsledok výbuchu sa nemení.
misc.redstone-implementationSpôsob výpočtu redstonu: VANILLA, EIGENCRAFT, ALTERNATE_CURRENT.ALTERNATE_CURRENTPredvolené VANILLA. Alternatívny výpočet výrazne uľahčí redstonovému prachu, ale v malom počte prípadov zmení správanie obvodov závislých od poradia aktualizácií. Hráčom s technickými stavbami to oznámte.
hopper.disable-move-eventVypne udalosť pre pluginy pri každom presune predmetu hopperom.falsetrue iba vtedy, keď žiadny plugin presuny hopperov nestráži (ochrany truhlíc, filtre). Inak by ochrany prestali fungovať.
tick-rates.mob-spawnerAko často (v tickoch) spawnery mobov kontrolujú okolie a spawnujú.2Predvolené 1. Spawner sa kontroluje iba každý druhý tick. Paper mu pritom odpočítava čakaciu dobu rýchlejšie, takže moby spawnuje približne rovnako často. -1 vypne všetky spawnery.
tick-rates.grass-spreadAko často (v tickoch) sa server pokúša rozšíriť trávu.4Predvolené 1. Tráva sa šíri pomalšie, hráči to zvyčajne nespoznajú.
entities.spawning.despawn-rangesVzdialenosť od hráča, kde moby náhodne (soft) alebo okamžite (hard) miznú. Vanilla: 32 a 128 blokov.Napríklad monster: soft: 30, hard: 72Na preplnených serveroch. Menší hard uvoľní miesto pre nové moby bližšie k hráčom.
environment.treasure-maps.enabledMapy pokladov od dedinčanov a z truhlíc. Hľadanie najbližšej stavby je veľmi náročné.truefalse, keď spark ukazuje lag pri obchodovaní s kartografmi alebo otváraní truhlíc.
entities.armor-stands.tickČi stojany na brnenie tikajú (fyzika, gravitácia).truefalse na serveroch s tisíckami dekoračných stojanov. Stojany potom nepadajú a niektoré pluginy s nimi nemusia fungovať.

Ukážka, ako úpravy v súbore vyzerajú (iba zmenené časti, ostatné riadky súboru ponechajte):

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 a bukkit.yml#

Paper číta aj staršie konfiguračné súbory spigot.yml a bukkit.yml v hlavnom priečinku servera.

spigot.yml#

Všetky nastavenia sú v sekcii world-settings › default.

NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
entity-activation-range.animalsV akej vzdialenosti (bloky) od hráča zvieratá plne tikajú. Ďalej tikajú iba občas.16–24Predvolené 32. Znížte na serveroch s veľkými ohradami zvierat.
entity-activation-range.monstersTo isté pre príšery.24Predvolené 32.
entity-activation-range.villagersTo isté pre dedinčanov.16Predvolené 32. Dedinčania patria k najnáročnejším entitám. Príliš nízka hodnota spomalí ich farmy.
entity-activation-range.miscOstatné entity (predmety na zemi, vozíky).8–12Predvolené 16.
entity-activation-range.raidersNájazdníci.48Predvolené 64. Príliš nízka hodnota rozbije nájazdy (raidy).
merge-radius.itemDo akej vzdialenosti (bloky) sa zlučujú rovnaké predmety na zemi.2.5Predvolené 0.5. Väčšia hodnota = menej entít na zemi.
merge-radius.expTo isté pre guľôčky skúseností. -1 = správanie Vanilly.3.0Predvolené -1.
nerf-spawner-mobsMoby zo spawnera nemajú umelú inteligenciu (nechodia, neútočia).truePredvolené false. Ušetrí výkon na XP farmách, ale moby zo spawnera potom neútočia – oznámte to hráčom.
ticks-per.hopper-transferPo koľkých tickoch hopper presunie predmet.8Predvolené je 8 (Vanilla). Vyššia hodnota spomalí všetky hoppery – mení správanie redstonových hodín.

bukkit.yml#

NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
spawn-limits.monstersMaximálny počet príšer (na hráča, ak je v Paperi zapnuté per-player-mob-spawns).50Predvolené 70. Menej príšer = menej výpočtov.
spawn-limits.animalsMaximálny počet zvierat, ktoré sa objavia samy.8Predvolené 10.
spawn-limits.water-animals, water-ambient, ambientRyby, chobotnice, netopiere.3, 10, 5Predvolené 5, 20, 15.
ticks-per.monster-spawnsPo koľkých tickoch server skúša spawnovať príšery.2Predvolené 1.
ticks-per.autosavePo koľkých tickoch sa ukladá celý svet (6 000 = 5 minút).6000Nemeňte. Paper ukladá chunky priebežne.

Predgenerovanie sveta s Chunky#

Keď hráč príde na miesto, kde ešte nikto nebol, server musí terén vygenerovať. Je to najnáročnejšia operácia vôbec: jeden hráč na elytre dokáže zraziť TPS celého servera. Riešenie je terén vygenerovať vopred a okraj sveta nastaviť tak, aby hráči mimo pripravenú oblasť nemohli.

Plugin Chunky vygeneruje terén na pozadí, postupne a s možnosťou prerušenia. Existuje pre Paper, Purpur, Folia aj ako mod pre Fabric, Forge a NeoForge.

  1. Nainštalujte Chunky v záložke Pluginy (pri modoch Mody) › Prechádzať, vyhľadajte Chunky a kliknite na Inštalovať. Potom server reštartujte (návod na pluginy).

  2. V Konzole nastavte stred okraja sveta:

    text
    worldborder center 0 0
    • worldborder center – nastaví stred okraja sveta.
    • 0 0 – súradnice X a Z stredu. Zvyčajne stred sveta, prípadne súradnice spawnu.
  3. Nastavte veľkosť okraja:

    text
    worldborder set 10000
    • worldborder set – nastaví veľkosť okraja.
    • 10000 – priemer v blokoch. Svet bude mať 10 000 × 10 000 blokov, teda 5 000 blokov od stredu na každú stranu.
  4. Prevezmite okraj do Chunky:

    text
    chunky worldborder

    Chunky si nastaví stred a polomer podľa okraja sveta.

  5. Spustite generovanie:

    text
    chunky start

    V konzole pravidelne uvidíte priebeh v percentách, počet vygenerovaných chunkov a odhad zostávajúceho času.

Ďalšie príkazy:

PríkazČo robí
chunky pausePozastaví generovanie a uloží postup. Hodí sa, keď sa pripojí veľa hráčov.
chunky continuePokračuje v pozastavenom generovaní.
chunky cancelZruší úlohu. Vygenerované chunky zostanú.
chunky progressVypíše priebeh (užitočné v hre).
chunky silentVypne alebo zapne priebežné správy v konzole.
chunky start world square 0 0 5000Spustí generovanie bez okraja sveta: svet world, tvar štvorec, stred 0 0, polomer 5 000 blokov.
chunky worldVyberie svet. V hre bez názvu vyberie svet, v ktorom stojíte.

Nether a End#

Nether je osemkrát menší než Overworld (1 blok v Netheri = 8 blokov v Overworlde). Pre okraj s priemerom 10 000 blokov v Overworlde (polomer 5 000) stačí v Netheri polomer 625 blokov. Pripojte sa do hry, prejdite do Netheru a v chate zadajte:

text
/chunky world
/chunky center 0 0
/chunky radius 625
/chunky start
  • /chunky world – bez názvu vyberie svet, v ktorom práve ste (Nether).
  • /chunky center 0 0 – stred generovania.
  • /chunky radius 625 – polomer v blokoch.
  • /chunky start – spustí generovanie.

Okraj sveta v Netheri (/worldborder set 1250 zadaný v Netheri) nastavte iba na Paperi, Purpure a od verzie 1.21.9 aj inde – až od tejto verzie má každá dimenzia vlastný okraj. V starších verziách Vanilly, Fabricu a NeoForge by príkaz zmenil okraj aj v Overworlde.

End stačí generovať menší (napríklad polomer 2 000–⁠3 000 blokov), hráči sa v ňom pohybujú hlavne okolo ostrovov.

Disk a procesor

Predgenerovaný svet zaberá miesto na disku – čím väčší okraj, tým viac. Začnite menším priemerom (5 000–⁠10 000 blokov) a sledujte voľné miesto v záložke Súbory alebo v ukazovateli disku v Konzole. Generovanie vyťaží procesor naplno: spúšťajte ho, keď je na serveri málo hráčov, alebo ho medzitým pozastavte príkazom chunky pause.

Po reštarte servera generovanie nepokračuje samo. Nadviažte príkazom chunky continue (alebo v plugins/Chunky/config.yml nastavte continue-on-restart: true).

Diagnostika so spark#

spark je profiler: počas prevádzky zaznamenáva, čo server robí, a výsledok ukáže ako prehľadný strom s percentami. Paper ho má od verzie 1.21 vstavaný (Purpur tiež), na Fabricu a NeoForge si nainštalujte mod spark z Modrinthu. Na proxy Velocity sa príkaz volá sparkv.

Rýchly prehľad#

Príkaz (v konzole)Čo ukáže
spark tpsTPS za posledných 5 s, 10 s, 1 min, 5 min a 15 min, časy tickov a vyťaženie procesora. Hodnoty zafarbí nazeleno, naoranžovo alebo načerveno podľa toho, aké sú dobré.
spark healthOdkaz na živý prehľad: TPS, MSPT, procesor, pamäť, disk. Aktualizuje sa každých 10 sekúnd.
spark gcHistória garbage collectora: koľkokrát a ako dlho upratoval pamäť.
spark pingPriemerný ping hráčov. S --player <NICK> ping jedného hráča.
spark tickmonitor --threshold-tick 50Stráži ticky dlhšie než 50 ms a každý vypíše. Opakovaným zadaním spark tickmonitor stráženie vypnete.

Profilovanie krok za krokom#

  1. Počkajte, kým server laguje (alebo kým je na ňom bežný počet hráčov). Profil prázdneho servera nič neukáže.

  2. V Konzole spustite profiler na 10 minút:

    text
    spark profiler start --timeout 600
    • spark profiler start – spustí profiler.
    • --timeout 600 – po 600 sekundách (10 minútach) ho sám zastaví a nahrá výsledok.
  3. Počkajte 10 minút. V konzole sa objaví odkaz na profil (spark.lucko.me/…).

  4. Odkaz vložte do Analýzy Spark profilu. Ukáže, čo server spomaľuje a čo zmeniť.

Profil nemusíte nahrávať: s voľbou --save-to-file (napríklad spark profiler start --timeout 600 --save-to-file) ho spark uloží ako súbor .sparkprofile do priečinka plugins/spark (na Fabricu a NeoForge config/spark). Stiahnite ho v záložke Súbory a nahrajte do analýzy.

Keď chcete profiler ukončiť skôr, zadajte spark profiler stop. Na krátke výkyvy (server občas na sekundu „zamrzne“) použite:

text
spark profiler start --only-ticks-over 100
  • --only-ticks-over 100 – zaznamená iba ticky dlhšie než 100 ms. Vyfiltruje bežnú prevádzku a zostanú iba „laggy“ ticky. Hodnotu voľte medzi 50 a 100.

Ako čítať výsledok#

Keď chcete strom prejsť sami, otvorte odkaz na profil v prehliadači:

  1. V zozname vlákien rozbaľte Server thread – hlavné vlákno hry. Problémy iných vlákien (načítavanie chunkov, sieť) sú menej časté.
  2. Klikaním rozbaľujte uzly a sledujte percentá. Choďte vždy cestou s najvyšším podielom.
  3. Čas strávený v Thread.sleep() alebo „parked“ je v poriadku – server čaká na ďalší tick, pretože má rezervu.
  4. Typické nálezy:
V profile uvidíteČo to znamenáČo urobiť
Veľký podiel pri tickEntities alebo entitách (Villager, Zombie …)Príliš veľa entít.entity-activation-range, limity spawnu, prezrieť farmy (pozrite Koľko entít je na serveri).
Veľký podiel pri generovaní chunkovHráči objavujú nový terén.Chunky a okraj sveta.
Názov balíka pluginu (napríklad com.example.plugin)Konkrétny plugin.Aktualizovať, nastaviť, alebo nahradiť.
Redstone, hopperyTechnické stavby.redstone-implementation, hopper.disable-move-event (opatrne).
  1. V hornej lište prepnite zobrazenie na Sources – ukáže samostatný strom pre každý plugin alebo mod a hneď je vidieť, ktorý zaťažuje najviac.

Odkaz na profil môžete poslať autorovi pluginu alebo našej podpore. Neobsahuje heslá ani súbory servera.

Koľko entít je na serveri#

Na Paperi vypíše počty entít podľa typu príkaz paper entity list. V konzole treba uviesť aj svet:

text
paper entity list * minecraft:overworld
paper entity list minecraft:villager minecraft:overworld
  • paper entity list – výpis entít.
  • * – bez filtra, vypíše všetky typy entít s počtami (prvé číslo sú tikajúce entity, druhé netikajúce).
  • minecraft:villager – filter na jeden typ. Výpis potom ukáže súradnice chunkov, kde je týchto entít najviac.
  • minecraft:overworld – svet (minecraft:the_nether, minecraft:the_end pre ďalšie dimenzie). V hre svet uvádzať nemusíte, použije sa ten, v ktorom stojíte.

Na nájdené miesto sa potom pozrite v hre a farmu alebo ohradu zmenšite.

Mody pre výkon (Fabric a NeoForge)#

Fabric a NeoForge nemajú optimalizácie Paperu, ale existujú serverové mody s rovnakým cieľom. Všetky nájdete na Modrinthe (v záložke Mody › Prechádzať):

ModČo robíLoader
LithiumOptimalizuje fyziku, umelú inteligenciu mobov a ďalšie časti hry bez zmeny správania.Fabric, NeoForge
FerriteCoreZnižuje spotrebu pamäte.Fabric, Forge, NeoForge
ModernFixZrýchľuje štart a znižuje spotrebu pamäte, hlavne pri veľkých modpackoch.Fabric, Forge, NeoForge
C2MEParalelné generovanie a načítavanie chunkov. Zasahuje hlboko do práce so svetom – pred nasadením zálohujte.Fabric
sparkProfiler opísaný vyššie.Fabric, Forge, NeoForge
ChunkyPredgenerovanie sveta.Fabric, Forge, NeoForge

Mod vždy vyberajte pre presnú verziu Minecraftu a loadera. Podrobne v návode Mody a modpacky.

Kedy je čas na upgrade#

Upgrade balíka má zmysel, keď:

  • spark ukazuje, že server je vyťažený rovnomerne (žiadny jeden plugin alebo farma nedominuje) a MSPT je trvalo nad 40 ms pri bežnom počte hráčov,
  • spark health ukazuje pamäť trvalo pri strope a garbage collector nestíha upratovať,
  • pridávate veľký modpack alebo plánujete výrazne viac hráčov.

Ak jeden plugin alebo farma berie väčšinu času, viac výkonu problém nevyrieši – príčinu treba odstrániť.

Overenie#

  1. Po zmenách reštartujte server a nechajte ho bežať s hráčmi aspoň 15 minút.
  2. Zadajte spark tps. MSPT (medián) by mal byť pod 50 ms, ideálne pod 35 ms, a TPS 20.
  3. Hláška Can't keep up! by sa už nemala opakovať.
  4. Pri neistote spustite znova profil na 10 minút a porovnajte ho s predchádzajúcim.

Keď niečo nefunguje#

Server po úprave konfigurácie nenaštartuje#

Najčastejšie je chyba v YAML (tabulátor, zlé odsadenie, duplicitná sekcia). V konzole hľadajte riadok s názvom súboru a číslom riadka. Opravte ho, alebo súbor zmažte – Paper ho pri štarte vytvorí znova s predvolenými hodnotami (vaše úpravy sa tým stratia). Prípadne obnovte zálohu.

Parametre nie sú kompatibilné, vrátené na predchádzajúce nastavenie.#

Server s novými parametrami nenaštartoval a zákaznícka zóna ich vrátila. Skontrolujte vlastné parametre (preklep, parameter pre inú verziu Javy) a skúste preset bez vlastných parametrov.

Server sa náhle vypne bez chyby v logu#

Typický príznak prekročenia pamäte. V Konzole sú riadky Exit code: 137 a Out of memory: true a zákaznícka zóna nad konzolou ukáže Serveru došla pamäť a systém ho ukončil. Panel server raz spustí znova; keď spadne druhýkrát do minúty, nechá ho vypnutý.

  1. V záložke Spustenie skontrolujte upozornenia pri spúšťacích parametroch. Keď je halda na balík príliš veľká alebo príkaz nemá stropy pamäte, kliknite na Použiť odporúčané.
  2. Ručne upravený alebo vlastný spúšťací príkaz zákaznícka zóna neprepisuje. Použite odporúčaný preset, alebo nastavte haldu podľa tabuľky v časti Prečo halda nie je celá RAM.
  3. V logu hľadajte OutOfMemoryError: Direct buffer memory alebo OutOfMemoryError: Metaspace. Ukazujú na plugin alebo mod, ktorý plní sieťové buffery alebo stále dookola načítava triedy.
  4. Keď pády pokračujú aj s odporúčaným nastavením, hľadajte únik pamäte: spark heapsummary ukáže, čo zaberá haldu, spark profiler start --alloc --timeout 300 čo najviac pamäte prideľuje. Odkaz vložte do Analýzy Spark profilu, alebo ho pošlite našej podpore.

java.lang.OutOfMemoryError: Java heap space#

Halda je plná. Buď je na serveri viac, než sa do pamäte zmestí (modpack, veľký počet hráčov), alebo plugin či mod pamäť „stráca“ (únik pamäte). Pomôže upgrade, alebo nájdenie úniku cez spark heapsummary. Ďalšie chyby nájdete v článku Časté chyby Minecraft servera.

Chunky hlási neplatný svet#

Názov sveta neexistuje. V hre použite /chunky world bez názvu (vyberie svet, v ktorom stojíte), alebo v konzole zadajte názov hlavného sveta podľa level-name (predvolene world).

Po zapnutí ALTERNATE_CURRENT nefunguje redstonová stavba#

Niektoré obvody sa spoliehajú na poradie aktualizácií Vanilly. Vráťte misc.redstone-implementation na VANILLA a server reštartujte.

Zhrnutie

  • Lag merajte príkazmi tps, mspt a spark tps: cieľ je TPS 20 a MSPT pod 50 ms.
  • Najväčší účinok: Paper, predgenerovaný svet s okrajom (Chunky) a rozumná simulation-distance.
  • Haldu a stropy pamäte nastavuje zákaznícka zóna sama podľa balíka. Predvolený preset Odporúčané (G1) meňte iba s dôvodom.
  • Príčinu lagu nájde spark profiler start --timeout 600, odkaz vložte do Analýzy Spark profilu.
  • Nastavenia Paperu meňte v config/paper-world-defaults.yml, po zálohe a s reštartom.

Bol návod užitočný?

Platí pre

  • Paper, Purpur
  • Fabric, NeoForge
  • Minecraft Java 1.20 a novšie
  • Minecraft 26.x

Služby

Nahlásiť chybu v návode

Hľadanie v návodoch