Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

Výkon Minecraft serveru: lagy, flagy, view distance, Chunky a spark

Jak poznat, co server zpomaluje, a jak to opravit: TPS a MSPT, spouštěcí flagy a paměť, vzdálenost vykreslování, nastavení Paperu, předgenerování světa s Chunky a profilování přes spark.

  • pokročilý
  • ~40 min
  • Aktualizováno 1. 10. 2026

Server, který „seká“, většinou netrpí nedostatkem hardwaru, ale jednou konkrétní příčinou: příliš velkou vzdáleností simulace, generováním nového terénu, přeplněnou farmou nebo špatně napsaným pluginem. Ukážeme, jak lag změřit, najít jeho příčinu a opravit ji – od rychlých úprav po nastavení Paperu a profilování.

Co budete potřebovat

  • Minecraft server u StormHostu (Paper nebo Purpur doporučujeme; část návodu platí i pro Fabric a NeoForge)
  • Přístup do záložek Konzole, Nastavení serveru, Spuštění a Soubory
  • Záloha serveru před úpravou konfigurace (návod)
  • Asi 40 minut

Jak poznat, co laguje#

Minecraft server počítá hru v ticích. Za sekundu jich má stihnout 20, na jeden tick má tedy 50 milisekund. Dvě čísla, která potřebujete znát:

HodnotaCo znamenáDobřeProblém
TPS (ticks per second)Kolik ticků server za sekundu skutečně stihne.20Pod 19 hráči cítí zpomalení, pod 15 je hra nepříjemná.
MSPT (milliseconds per tick)Kolik milisekund trvá jeden tick.Pod 50 ms, ideálně pod 35 msNad 50 ms server nestíhá a TPS klesá.

MSPT je přesnější ukazatel: server s MSPT 45 ms má pořád TPS 20, ale nemá žádnou rezervu. Když MSPT přeleze 50 ms, TPS začne klesat.

Hodnoty zjistíte v Konzoli (příkazy píšete bez lomítka):

text
tps
mspt
spark tps
  • tps – průměrné TPS za poslední 1, 5 a 15 minut (Paper, Purpur).
  • mspt – průměrný, nejkratší a nejdelší čas ticku (Paper, Purpur).
  • spark tps – TPS, MSPT (minimum, medián, 95. percentil, maximum) a vytížení procesoru. Funguje všude, kde je spark (Paper ho má vestavěný).

Když server nestíhá dlouhodobě, objeví se v konzoli:

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

Server tím říká, že je 2,5 sekundy (50 ticků) pozadu a ticky přeskočí. Jedna hláška při startu nebo při generování terénu nevadí. Pokud se opakuje každých pár minut, pokračujte tímto návodem.

Lag serveru, nebo něco jiného?#

Co hráč vidíPříčinaKde hledat
Bloky se po vybourání vracejí, mobové se zasekávají, všichni hráči mají stejný problémLag serveru (nízké TPS)Tento návod
Nízké FPS, trhaný obraz, ale ostatní hráči jsou v pořádkuVýkon počítače hráčeNastavení grafiky ve hře, módy pro klienta
Hráč „teleportuje“ zpět, vysoký ping jen u nějPřipojení hráčePing hráče příkazem spark ping --player <NICK>
Server je v pořádku, ale nové oblasti se načítají pomaluGenerování terénuPředgenerování s Chunky

Rychlé výhry#

Seřazeno od největšího účinku k menšímu. Většinu zvládnete do deseti minut.

PořadíKrokProč pomůžeKde
1Používejte Paper nebo Purpur místo VanillyPaper obsahuje stovky optimalizací a opravy chyb, se kterými Vanilla nepočítá.Záložka Software, viz Typy serverů
2Předgenerujte svět a nastavte jeho okrajGenerování nového terénu je nejnáročnější operace serveru.Chunky
3Snižte simulation-distance na 6–⁠8 a view-distance na 8Méně chunků na hráče = méně práce v každém ticku.View a simulation distance
4Najděte příčinu profileremUkáže konkrétní plugin, farmu nebo entitu.spark
5Omezte entity a farmyStovky zvířat v jedné ohradě nebo přeplněná farma zabijí TPS.Nastavení Paperu
6Ponechte výchozí spouštěcí flagyVýchozí preset je vyladěný na velikost vaší paměti.Spouštěcí flagy
7Aktualizujte server, pluginy a módyNové verze často opravují úniky paměti a pomalé části kódu.Záložka Software a Pluginy

Pluginy na „čištění lagu“

Pluginy, které slibují zázračné zrychlení (pravidelné mazání předmětů na zemi, „vyčištění RAM“, vynucené volání garbage collectoru), problém neřeší. Mažou hráčům věci, často způsobují sekání a příčinu jen schovají. Najděte skutečnou příčinu přes spark.

Spouštěcí flagy a paměť#

Flagy jsou parametry, se kterými se spouští Java. Určují velikost paměti pro hru (halda, heap), stropy paměti mimo haldu a chování garbage collectoru, který z paměti uklízí nepotřebná data. V zákaznické zóně je najdete v záložce Spuštění, v části Spouštěcí parametry.

Haldu a stropy počítá zákaznická zóna sama podle velikosti balíčku, typu serveru, verze Javy a počtu pluginů nebo módů. Přepočítá je při založení serveru, po změně balíčku, po změně typu nebo verze a před startem z portálu, když se od minula něco z toho změnilo. Spouštěcí příkaz, který jste upravili ručně v panelu nebo nastavili jako vlastní, nepřepisuje. Když má takový příkaz haldu větší, než menší balíček unese, server po změně balíčku nespustíme (hned by spadl) a napíšeme vám e-mail.

VolbaCo děláKdy použít
Preset – Doporučené (G1)Garbage collector G1 s nastavením podle dokumentace Paperu. Výchozí pro všechny typy serverů.Většina serverů.
Preset – Nízké pauzy (ZGC)Garbage collector s velmi krátkými pauzami za cenu vyššího vytížení procesoru. Jen Java 21 a novější.Velké servery od 16 GB, když spark gc ukazuje dlouhé pauzy a procesor má rezervu.
Preset – ProxyFlagy pro Velocity a BungeeCord.Nabízí se jen u proxy serverů.
Preset – Bez laděníJen velikost haldy a paměťové stropy.Dočasně při hledání chyby, zda ji nezpůsobují flagy.
Vlastní parametryDoplňkové parametry. Povolené jsou jen -XX:…, -D…=… a --add-modules=…, nejvýš 30. Haldu nastavit nejde. Strop síťových bufferů (-XX:MaxDirectMemorySize), zkompilovaného kódu (-XX:ReservedCodeCacheSize) a načtených tříd (-XX:MaxMetaspaceSize) ano, halda se pak přepočítá.Když vám návod pluginu nebo módu řekne o konkrétní -D vlastnost, nebo když plugin pro hlasový chat potřebuje víc síťových bufferů.

Všechny presety mají stejné pojistky: strop síťových bufferů, zkompilovaného kódu a načtených tříd, MALLOC_ARENA_MAX=2 (méně paměťových arén alokátoru) a od Javy 17 -XX:TrimNativeHeapInterval (vrací nevyužitou paměť systému). Purpur navíc automaticky dostane --add-modules=jdk.incubator.vector (rychlejší výpočty, které Purpur umí využít).

Tlačítka v této části:

  • Uložit – nastavení se použije při dalším startu.
  • Uložit a restartovat – server se hned restartuje. Když s novými flagy nenastartuje, zákaznická zóna je sama vrátí a uvidíte hlášku Flagy nejsou kompatibilní, vráceno na předchozí nastavení.
  • Vrátit předchozí – vrátí poslední funkční nastavení.
  • Použít doporučené – objeví se, když je halda na balíček moc velká nebo spouštěcí příkaz nemá stropy paměti. Nastaví doporučený příkaz.
  • Přepočítat teď – přepočítá flagy hned, nemusíte čekat na další start z portálu.

Pod volbou Rozpad paměti uvidíte, kolik dostane halda a kolik zbývá pro ostatní části. Po automatickém přepočtu zákaznická zóna ukáže například Startup jsme upravili podle nové velikosti RAM: halda 8,2 → 9,6 GB.

Server mimo StormHost? Startovací skript se stejným výpočtem pro Docker, Linux i Windows vytvoří Generátor startovacího skriptu.

Proč halda není celá RAM#

Halda (-Xmx) sama sebe nepřeroste. Roste paměť mimo haldu: síťové buffery, načtené třídy pluginů a módů, zkompilovaný kód, vlákna a alokátor systému. Nejvíc síťové buffery – bez stropu smí narůst až do velikosti haldy, takže server s haldou 6 GB může skončit na 12 GB.

Kontejner serveru má tvrdý limit o 5 % vyšší než balíček (u balíčků do 4 GB o 10 %, do 2 GB o 15 %) a nemá swap. Když proces limit překročí, systém ho ukončí. V Konzoli se objeví Out of memory: true, v logu serveru žádná chyba není.

Proto má každá velká část mimo haldu strop, všechno se sečte s rezervou pod velikost balíčku a halda dostane zbytek. Když některá část narazí na strop, server místo tichého pádu zapíše do logu chybu (OutOfMemoryError: Direct buffer memory nebo Metaspace), podle které se dá najít viník.

Paměť balíčkuHalda (Paper, 20 pluginů)Halda (modpack, 200 módů)Limit kontejneru
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ální i maximální velikost stejnou (-Xms = -Xmx) a zabere se hned při startu. Graf paměti v panelu proto ukazuje vysoké číslo od začátku. Panel navíc počítá i mezipaměť souborů světa, kterou systém v případě potřeby uvolní. Číslo blízko limitu samo o sobě pád neznamená.

Dokumentace Paperu doporučuje na serveru aspoň 6–⁠10 GB haldy bez ohledu na počet hráčů a varuje, že víc paměti nad určitou mez výkon nezvýší.

Kdy je čas na větší balíček

Pokud spark health ukazuje haldu trvale přes 90 % i po úklidu (spark gc hlásí časté a dlouhé pauzy), a přitom jste vyloučili úniky paměti v pluginech, server potřebuje víc paměti. Větší balíček nastavíte v záložce Změna balíčku (návod). Flagy se po upgradu přepočítají samy, projeví se při dalším startu.

View a simulation distance#

Svět je rozdělený na chunky (sloupce 16 × 16 bloků). Server kolem každého hráče drží načtené chunky v určitém okruhu:

  • view-distance – kolik chunků kolem hráče server posílá do hry (co hráč vidí). Ovlivňuje hlavně paměť a síť.
  • simulation-distance – v jakém okruhu chunky „žijí“: pohybují se mobové, roste obilí, funguje redstone a farmy. Ovlivňuje hlavně procesor, tedy TPS.

Počet chunků roste s druhou mocninou vzdálenosti. Při view-distance=10 drží server kolem každého hráče 441 chunků, při 8 jen 289 (o třetinu méně). U simulace je efekt stejný.

Situaceview-distancesimulation-distance
Malý server s kamarády, bez lagu1010
Veřejný survival, 20+ hráčů8–⁠106–⁠8
Server laguje a nevíte proč86
Minihry, lobby6–⁠84–⁠6

Nastavíte je v záložce Nastavení serveru ve skupině Svět (všechna nastavení). Simulaci pod 5 nedoporučujeme – větší farmy pak přestanou fungovat, protože část farmy je mimo simulovanou oblast.

Paper a jednotlivé světy

Na Paperu jde vzdálenosti nastavit i pro každý svět zvlášť v souboru spigot.yml (world-settings › default › view-distance a simulation-distance). Hodnota default znamená „použij server.properties“.

Nastavení Paperu#

Paper a Purpur mají vlastní konfiguraci ve složce config:

SouborCo obsahuje
config/paper-global.ymlNastavení celého serveru (proxy, načítání chunků, limity spamu).
config/paper-world-defaults.ymlVýchozí nastavení pro všechny světy. Tady se ladí výkon.
world/dimensions/minecraft/<dimenze>/paper-world.ymlVýjimky pro jednu dimenzi (od verze 26.1; <dimenze> je overworld, the_nether nebo the_end). Ve starších verzích soubor paper-world.yml ve složce světa, například world_nether/paper-world.yml.

Upravujte vždy paper-world-defaults.yml. Soubor otevřete v záložce Soubory v editoru, najděte existující sekci (například chunks:) a změňte hodnotu v ní. Nevkládejte stejnou sekci podruhé – duplicitní klíč server buď odmítne načíst, nebo použije jen jeden z nich a vaše změna se neprojeví.

Pravidla YAML

Odsazení jen mezerami (nikdy tabulátorem), stejné odsazení na stejné úrovni, za dvojtečkou mezera. Před úpravou udělejte zálohu. Po úpravě server restartujte – příkaz paper reload nedoporučujeme, některé hodnoty se načítají jen při startu.

Vybraná nastavení s největším vlivem na výkon:

NastaveníCo děláDoporučená hodnotaKdy změnit
chunks.prevent-moving-into-unloaded-chunksNepustí hráče do chunku, který ještě není načtený (rychlé létání na elytře, jízda vozíkem). Server pak nemusí načítat chunky „na sílu“ uprostřed ticku.trueVýchozí false. Zapněte na serverech s elytrami a rychlým cestováním.
chunks.entity-per-chunk-save-limitKolik entit daného typu se v jednom chunku uloží. Chrání před chunky zahlcenými tisíci šípy nebo zkušenostmi.arrow: 16, experience_orb: 16, snowball: 8, ender_pearl: 8, fireball: 8, small_fireball: 8Výchozí bez limitu (-1). Nedávejte sem zvířata ani moby – zbytek by při uložení zmizel.
collisions.max-entity-collisionsPo kolika kolizích entita přestane počítat další srážky.2Výchozí 8. Nižší hodnota výrazně uleví místům, kde se mačká mnoho mobů. Mobové v davu se pak méně odstrkují – pokud tím přestane fungovat některá farma, vraťte hodnotu výš.
environment.optimize-explosionsZrychlí výpočet výbuchů (TNT, creepeři).trueVýchozí false. Zapněte vždy, výsledek výbuchu se nemění.
misc.redstone-implementationZpůsob výpočtu redstonu: VANILLA, EIGENCRAFT, ALTERNATE_CURRENT.ALTERNATE_CURRENTVýchozí VANILLA. Alternativní výpočet výrazně ulehčí redstonovému prachu, ale v málo případech změní chování obvodů závislých na pořadí aktualizací. Hráčům s technickými stavbami to oznamte.
hopper.disable-move-eventVypne událost pro pluginy při každém přesunu předmětu hopperem.falsetrue jen tehdy, když žádný plugin přesuny hopperů nehlídá (ochrany truhel, filtry). Jinak by ochrany přestaly fungovat.
tick-rates.mob-spawnerJak často (v ticích) spawnery mobů kontrolují okolí a spawnují.2Výchozí 1. Spawner se kontroluje jen každý druhý tick. Paper mu přitom odpočítává čekací dobu rychleji, takže moby spawnuje přibližně stejně často. -1 vypne všechny spawnery.
tick-rates.grass-spreadJak často (v ticích) se server pokouší rozšířit trávu.4Výchozí 1. Tráva se šíří pomaleji, hráči to obvykle nepoznají.
entities.spawning.despawn-rangesVzdálenost od hráče, kde mobové náhodně (soft) nebo okamžitě (hard) mizí. Vanilla: 32 a 128 bloků.Například monster: soft: 30, hard: 72Na přeplněných serverech. Menší hard uvolní místo pro nové moby blíž hráčům.
environment.treasure-maps.enabledMapy pokladů od vesničanů a z truhel. Hledání nejbližší stavby je velmi náročné.truefalse, když spark ukazuje lag při obchodování s kartografy nebo otevírání truhel.
entities.armor-stands.tickJestli stojany na brnění tikají (fyzika, gravitace).truefalse na serverech s tisíci dekoračních stojanů. Stojany pak nepadají a některé pluginy s nimi nemusí fungovat.

Ukázka, jak úpravy v souboru vypadají (jen změněné části, ostatní řádky souboru ponechte):

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 čte i starší konfigurační soubory spigot.yml a bukkit.yml v hlavní složce serveru.

spigot.yml#

Všechna nastavení jsou v sekci world-settings › default.

NastaveníCo děláDoporučená hodnotaKdy změnit
entity-activation-range.animalsV jaké vzdálenosti (bloky) od hráče zvířata plně tikají. Dál tikají jen občas.16–24Výchozí 32. Snižte na serverech s velkými ohradami zvířat.
entity-activation-range.monstersTotéž pro příšery.24Výchozí 32.
entity-activation-range.villagersTotéž pro vesničany.16Výchozí 32. Vesničané patří k nejnáročnějším entitám. Příliš nízká hodnota zpomalí jejich farmy.
entity-activation-range.miscOstatní entity (předměty na zemi, vozíky).8–12Výchozí 16.
entity-activation-range.raidersNájezdníci.48Výchozí 64. Moc nízká hodnota rozbije nájezdy (raidy).
merge-radius.itemDo jaké vzdálenosti (bloky) se slučují stejné předměty na zemi.2.5Výchozí 0.5. Větší hodnota = méně entit na zemi.
merge-radius.expTotéž pro kuličky zkušeností. -1 = chování Vanilly.3.0Výchozí -1.
nerf-spawner-mobsMobové ze spawneru nemají umělou inteligenci (nechodí, neútočí).trueVýchozí false. Ušetří výkon na XP farmách, ale moby ze spawneru pak neútočí – oznamte to hráčům.
ticks-per.hopper-transferPo kolika ticích hopper přesune předmět.8Výchozí je 8 (Vanilla). Vyšší hodnota zpomalí všechny hoppery – mění chování redstonových hodin.

bukkit.yml#

NastaveníCo děláDoporučená hodnotaKdy změnit
spawn-limits.monstersMaximální počet příšer (na hráče, pokud je v Paperu zapnuté per-player-mob-spawns).50Výchozí 70. Méně příšer = méně výpočtů.
spawn-limits.animalsMaximální počet zvířat, která se objeví sama.8Výchozí 10.
spawn-limits.water-animals, water-ambient, ambientRyby, chobotnice, netopýři.3, 10, 5Výchozí 5, 20, 15.
ticks-per.monster-spawnsPo kolika ticích server zkouší spawnovat příšery.2Výchozí 1.
ticks-per.autosavePo kolika ticích se ukládá celý svět (6 000 = 5 minut).6000Neměňte. Paper ukládá chunky průběžně.

Předgenerování světa s Chunky#

Když hráč dojde do místa, kde ještě nikdo nebyl, server musí terén vygenerovat. Je to nejnáročnější operace vůbec: jeden hráč na elytře dokáže srazit TPS celého serveru. Řešení je terén vygenerovat předem a okraj světa nastavit tak, aby hráči mimo připravenou oblast nemohli.

Plugin Chunky vygeneruje terén na pozadí, postupně a s možností přerušení. Existuje pro Paper, Purpur, Folia i jako mód pro Fabric, Forge a NeoForge.

  1. Nainstalujte Chunky v záložce Pluginy (u módů Módy) › Procházet, vyhledejte Chunky a klikněte na Instalovat. Pak server restartujte (návod na pluginy).

  2. V Konzoli nastavte střed okraje světa:

    text
    worldborder center 0 0
    • worldborder center – nastaví střed okraje světa.
    • 0 0 – souřadnice X a Z středu. Obvykle střed světa, případně souřadnice spawnu.
  3. Nastavte velikost okraje:

    text
    worldborder set 10000
    • worldborder set – nastaví velikost okraje.
    • 10000 – průměr v blocích. Svět bude 10 000 × 10 000 bloků, tedy 5 000 bloků od středu na každou stranu.
  4. Převezměte okraj do Chunky:

    text
    chunky worldborder

    Chunky si nastaví střed a poloměr podle okraje světa.

  5. Spusťte generování:

    text
    chunky start

    V konzoli pravidelně uvidíte průběh v procentech, počet vygenerovaných chunků a odhad zbývajícího času.

Další příkazy:

PříkazCo dělá
chunky pausePozastaví generování a uloží postup. Hodí se, když se připojí hodně hráčů.
chunky continuePokračuje v pozastaveném generování.
chunky cancelZruší úlohu. Vygenerované chunky zůstanou.
chunky progressVypíše průběh (užitečné ve hře).
chunky silentVypne nebo zapne průběžné zprávy v konzoli.
chunky start world square 0 0 5000Spustí generování bez okraje světa: svět world, tvar čtverec, střed 0 0, poloměr 5 000 bloků.
chunky worldVybere svět. Ve hře bez názvu vybere svět, ve kterém stojíte.

Nether a End#

Nether je osmkrát menší než Overworld (1 blok v Netheru = 8 bloků v Overworldu). Pro okraj o průměru 10 000 bloků v Overworldu (poloměr 5 000) stačí v Netheru poloměr 625 bloků. Připojte se do hry, přejděte do Netheru a v chatu zadejte:

text
/chunky world
/chunky center 0 0
/chunky radius 625
/chunky start
  • /chunky world – bez názvu vybere svět, ve kterém právě jste (Nether).
  • /chunky center 0 0 – střed generování.
  • /chunky radius 625 – poloměr v blocích.
  • /chunky start – spustí generování.

Okraj světa v Netheru (/worldborder set 1250 zadaný v Netheru) nastavte jen na Paperu, Purpuru a od verze 1.21.9 i jinde – teprve od této verze má každá dimenze vlastní okraj. Ve starších verzích Vanilly, Fabricu a NeoForge by příkaz změnil okraj i v Overworldu.

End stačí generovat menší (například poloměr 2 000–⁠3 000 bloků), hráči se v něm pohybují hlavně kolem ostrovů.

Disk a procesor

Předgenerovaný svět zabírá místo na disku – čím větší okraj, tím víc. Začněte menším průměrem (5 000–⁠10 000 bloků) a sledujte volné místo v záložce Soubory nebo v ukazateli disku v Konzoli. Generování vytíží procesor naplno: spouštějte ho, když je na serveru málo hráčů, nebo ho mezitím pozastavte příkazem chunky pause.

Po restartu serveru generování nepokračuje samo. Navažte příkazem chunky continue (nebo v plugins/Chunky/config.yml nastavte continue-on-restart: true).

Diagnostika se spark#

spark je profiler: během provozu zaznamenává, co server dělá, a výsledek ukáže jako přehledný strom s procenty. Paper ho má od verze 1.21 vestavěný (Purpur také), na Fabricu a NeoForge si nainstalujte mód spark z Modrinthu. Na proxy Velocity se příkaz jmenuje sparkv.

Rychlý přehled#

Příkaz (v konzoli)Co ukáže
spark tpsTPS za posledních 5 s, 10 s, 1 min, 5 min a 15 min, časy ticků a vytížení procesoru. Hodnoty obarví zeleně, oranžově nebo červeně podle toho, jak jsou dobré.
spark healthOdkaz na živý přehled: TPS, MSPT, procesor, paměť, disk. Aktualizuje se každých 10 sekund.
spark gcHistorie garbage collectoru: kolikrát a jak dlouho uklízel paměť.
spark pingPrůměrný ping hráčů. S --player <NICK> ping jednoho hráče.
spark tickmonitor --threshold-tick 50Hlídá ticky delší než 50 ms a každý vypíše. Opakovaným zadáním spark tickmonitor hlídání vypnete.

Profilování krok za krokem#

  1. Počkejte, až server laguje (nebo až je na něm běžný počet hráčů). Profil prázdného serveru nic neukáže.

  2. V Konzoli spusťte profiler na 10 minut:

    text
    spark profiler start --timeout 600
    • spark profiler start – spustí profiler.
    • --timeout 600 – po 600 sekundách (10 minut) ho sám zastaví a nahraje výsledek.
  3. Počkejte 10 minut. V konzoli se objeví odkaz na profil (spark.lucko.me/…).

  4. Odkaz vložte do Analýzy Spark profilu. Ukáže, co server zpomaluje a co změnit.

Profil nemusíte nahrávat: s volbou --save-to-file (například spark profiler start --timeout 600 --save-to-file) ho spark uloží jako soubor .sparkprofile do složky plugins/spark (na Fabricu a NeoForge config/spark). Stáhněte ho v záložce Soubory a nahrajte do analýzy.

Když chcete profiler ukončit dřív, zadejte spark profiler stop. Na krátké výkyvy (server občas na sekundu „zamrzne“) použijte:

text
spark profiler start --only-ticks-over 100
  • --only-ticks-over 100 – zaznamená jen ticky delší než 100 ms. Vyfiltruje běžný provoz a zůstanou jen „laggy“ ticky. Hodnotu volte mezi 50 a 100.

Jak číst výsledek#

Když chcete strom projít sami, otevřete odkaz na profil v prohlížeči:

  1. V seznamu vláken rozbalte Server thread – hlavní vlákno hry. Problémy jiných vláken (načítání chunků, síť) jsou méně časté.
  2. Klikáním rozbalujte uzly a sledujte procenta. Jděte vždy cestou s nejvyšším podílem.
  3. Čas strávený ve Thread.sleep() nebo „parked“ je v pořádku – server čeká na další tick, protože má rezervu.
  4. Typické nálezy:
V profilu uvidíteCo to znamenáCo udělat
Velký podíl u tickEntities nebo entit (Villager, Zombie …)Příliš mnoho entit.entity-activation-range, limity spawnu, prohlédnout farmy (viz Kolik entit je na serveru).
Velký podíl u generování chunkůHráči objevují nový terén.Chunky a okraj světa.
Název balíčku pluginu (například com.example.plugin)Konkrétní plugin.Aktualizovat, nastavit, nebo nahradit.
Redstone, hopperyTechnické stavby.redstone-implementation, hopper.disable-move-event (opatrně).
  1. V horní liště přepněte zobrazení na Sources – ukáže samostatný strom pro každý plugin nebo mód a hned je vidět, který zatěžuje nejvíc.

Odkaz na profil můžete poslat autorovi pluginu nebo naší podpoře. Neobsahuje hesla ani soubory serveru.

Kolik entit je na serveru#

Na Paperu vypíše počty entit podle typu příkaz paper entity list. V konzoli je potřeba uvést i svět:

text
paper entity list * minecraft:overworld
paper entity list minecraft:villager minecraft:overworld
  • paper entity list – výpis entit.
  • * – bez filtru, vypíše všechny typy entit s počty (první číslo jsou tikající entity, druhé netikající).
  • minecraft:villager – filtr na jeden typ. Výpis pak ukáže souřadnice chunků, kde je těchto entit nejvíc.
  • minecraft:overworld – svět (minecraft:the_nether, minecraft:the_end pro další dimenze). Ve hře svět uvádět nemusíte, použije se ten, ve kterém stojíte.

Na nalezené místo se pak podívejte ve hře a farmu nebo ohradu zmenšete.

Módy pro výkon (Fabric a NeoForge)#

Fabric a NeoForge nemají optimalizace Paperu, ale existují serverové módy se stejným cílem. Všechny najdete na Modrinthu (v záložce Módy › Procházet):

MódCo děláLoader
LithiumOptimalizuje fyziku, umělou inteligenci mobů a další části hry beze změny chování.Fabric, NeoForge
FerriteCoreSnižuje spotřebu paměti.Fabric, Forge, NeoForge
ModernFixZrychluje start a snižuje spotřebu paměti, hlavně u velkých modpacků.Fabric, Forge, NeoForge
C2MEParalelní generování a načítání chunků. Zasahuje hluboko do práce se světem – před nasazením zálohujte.Fabric
sparkProfiler popsaný výše.Fabric, Forge, NeoForge
ChunkyPředgenerování světa.Fabric, Forge, NeoForge

Mód vždy vybírejte pro přesnou verzi Minecraftu a loaderu. Podrobně v návodu Módy a modpacky.

Kdy je čas na upgrade#

Upgrade balíčku má smysl, když:

  • spark ukazuje, že server je vytížený rovnoměrně (žádný jeden plugin nebo farma nedominuje) a MSPT je trvale nad 40 ms při běžném počtu hráčů,
  • spark health ukazuje paměť trvale u stropu a garbage collector se nestíhá uklízet,
  • přidáváte velký modpack nebo plánujete výrazně víc hráčů.

Pokud jeden plugin nebo farma bere většinu času, víc výkonu problém nevyřeší – příčinu je potřeba odstranit.

Ověření#

  1. Po změnách restartujte server a nechte ho běžet s hráči aspoň 15 minut.
  2. Zadejte spark tps. MSPT (medián) by měl být pod 50 ms, ideálně pod 35 ms, a TPS 20.
  3. Hláška Can't keep up! by se už neměla opakovat.
  4. Při nejistotě spusťte znovu profil na 10 minut a porovnejte ho s předchozím.

Když něco nefunguje#

Server po úpravě konfigurace nenastartuje#

Nejčastěji je chyba v YAML (tabulátor, špatné odsazení, duplicitní sekce). V konzoli hledejte řádek s názvem souboru a číslem řádku. Opravte ho, nebo soubor smažte – Paper ho při startu vytvoří znovu s výchozími hodnotami (vaše úpravy se tím ztratí). Případně obnovte zálohu.

Flagy nejsou kompatibilní, vráceno na předchozí nastavení.#

Server s novými flagy nenastartoval a zákaznická zóna je vrátila. Zkontrolujte vlastní flagy (překlep, flag pro jinou verzi Javy) a zkuste preset bez vlastních flagů.

Server se náhle vypne bez chyby v logu#

Typický příznak překročení paměti. V Konzoli jsou řádky Exit code: 137 a Out of memory: true a zákaznická zóna nad konzolí ukáže Serveru došla paměť a systém ho ukončil. Panel server jednou spustí znovu; když spadne podruhé do minuty, nechá ho vypnutý.

  1. V záložce Spuštění zkontrolujte upozornění u spouštěcích flagů. Když je halda na balíček moc velká nebo příkaz nemá stropy paměti, klikněte na Použít doporučené.
  2. Ručně upravený nebo vlastní spouštěcí příkaz zákaznická zóna nepřepisuje. Použijte doporučený preset, nebo nastavte haldu podle tabulky v části Proč halda není celá RAM.
  3. V logu hledejte OutOfMemoryError: Direct buffer memory nebo OutOfMemoryError: Metaspace. Ukazují na plugin nebo mód, který plní síťové buffery nebo pořád dokola načítá třídy.
  4. Když pády pokračují i s doporučeným nastavením, hledejte únik paměti: spark heapsummary ukáže, co zabírá haldu, spark profiler start --alloc --timeout 300 co nejvíc paměti přiděluje. Odkaz vložte do Analýzy Spark profilu, nebo ho pošlete naší podpoře.

java.lang.OutOfMemoryError: Java heap space#

Halda je plná. Buď je na serveru víc, než se do paměti vejde (modpack, velký počet hráčů), nebo plugin či mód paměť „ztrácí“ (únik paměti). Pomůže upgrade, nebo nalezení úniku přes spark heapsummary. Další chyby najdete v článku Časté chyby Minecraft serveru.

Chunky hlásí neplatný svět#

Název světa neexistuje. Ve hře použijte /chunky world bez názvu (vybere svět, ve kterém stojíte), nebo v konzoli zadejte název hlavního světa podle level-name (výchozí world).

Po zapnutí ALTERNATE_CURRENT nefunguje redstonová stavba#

Některé obvody spoléhají na pořadí aktualizací Vanilly. Vraťte misc.redstone-implementation na VANILLA a server restartujte.

Shrnutí

  • Lag měřte příkazy tps, mspt a spark tps: cíl je TPS 20 a MSPT pod 50 ms.
  • Největší účinek: Paper, předgenerovaný svět s okrajem (Chunky) a rozumná simulation-distance.
  • Haldu a stropy paměti nastavuje zákaznická zóna sama podle balíčku. Výchozí preset Doporučené (G1) měňte jen s důvodem.
  • Příčinu lagu najde spark profiler start --timeout 600, odkaz vložte do Analýzy Spark profilu.
  • Nastavení Paperu měňte v config/paper-world-defaults.yml, po záloze a s restartem.

Byl návod užitečný?

Platí pro

  • Paper, Purpur
  • Fabric, NeoForge
  • Minecraft Java 1.20 a novější
  • Minecraft 26.x

Služby

Nahlásit chybu v návodu

Hledání v návodech