×minecraft.pl-15%na hosting MinecraftDDoS · VPS · DedicatedKOD:MCPLAktywuj →
-15%na hosting dla minecraft.pl
DDoS · VPS · DEDICATED · skillhost.pl
MCPLAktywuj →
Discord
Serwery — Optymalizacja

Lagi na serwerze Minecraft

Gra się tnie, gracze się skarżą, TPS spada do 10 — i nie wiesz co jest przyczyną. Ten poradnik przeprowadzi Cię przez diagnozę krok po kroku: od odczytania TPS, przez profiler Spark, po konkretne poprawki w plikach konfiguracyjnych. Bez zgadywania, bez resetowania serwera na ślepo.

Rodzaje lagów — TPS, sieć, klient

Zanim zaczniesz cokolwiek naprawiać, musisz wiedzieć jaki masz typ lagu. Są trzy zupełnie różne przyczyny, z trzema różnymi rozwiązaniami:

TPS lag (lag serwera)

TPS (Ticks Per Second) to liczba tyknięć silnika gry na sekundę. Minecraft działa na 20 TPS — każde tyknięcie serwer przelicza fizykę, AI mobów, farmowanie, redstone i wszystko inne. Jeśli jedno tyknięcie trwa za długo (bo jest za dużo do obliczenia), TPS spada poniżej 20.

Objawy TPS lagu: rubberbanding (cofanie gracza po chodzeniu), mobs stoją w miejscu, opóźnione uderzenia, skrzynie nie otwierają się od razu, zbiory roślin nie działają. To najpoważniejszy i najczęstszy rodzaj lagu na serwerach Minecraft.

Network lag (ping)

Wysoki ping to problem po stronie gracza lub połączenia serwer-gracz. Serwer może działać na idealnych 20 TPS, a gracz z pingiem 500 ms będzie odczuwał poważne lagi. Objawy to: płynny ruch ale opóźnione akcje, chat przychodzi z opóźnieniem, ale mobs się normalnie ruszają.

Rozwiązania: wybierz hosting w Polsce lub Niemczech (blisko graczy), sprawdź czy serwer nie jest przeciążony sieciowo (zbyt dużo pakietów — View Distance).

Client lag (FPS)

Lag po stronie klienta to niskie FPS gracza — serwer działa świetnie, ale konkretna osoba ma słaby komputer. Objawem jest to, że tylko jedna osoba się skarży, a inni grają płynnie. Rozwiązanie: gracz musi zwiększyć FPS — OptiFine, Sodium, zmniejszenie Render Distance.

Diagnoza w 30 sekund: Wpisz /tps na serwerze. Jeśli TPS = 20 a gracz laguje — to ping lub FPS, nie serwer. Jeśli TPS jest niskie — czytaj dalej.

Diagnostyka — Spark, /tps, Timings

Nie możesz naprawić lagu, jeśli nie wiesz co go powoduje. Oto narzędzia diagnostyczne od najprostszego do najdokładniejszego:

Komenda /tps

Podstawowe narzędzie dostępne na każdym serwerze Paper/Spigot. Pokazuje TPS z ostatniej minuty, 5 minut i 15 minut. Interpretacja:

  • 20.0 TPS — ideał, serwer działa bez opóźnień
  • 18–20 TPS — akceptowalne, lagi prawie niezauważalne
  • 15–18 TPS — gracze zauważają spowolnienie, czas działać
  • 10–15 TPS — poważne lagi, rubberbanding, czas na diagnostykę
  • Poniżej 10 TPS — serwer ledwo działa, natychmiastowa interwencja

Spark Profiler

Spark to najlepsze narzędzie do diagnozowania lagów na serwerze Minecraft. Instalujesz go jako plugin, a następnie uruchamiasz profiler CPU, który przez kilka minut nagrywa co serwer robi i ile czasu na to poświęca.

Jak użyć Spark krok po kroku:

  1. Pobierz Spark z spark.lucko.me i wrzuć do folderu /plugins/
  2. Zrestartuj serwer, poczekaj aż będzie pod obciążeniem (gracze grają)
  3. W konsoli wpisz: /spark profiler start
  4. Poczekaj 2–5 minut podczas lagu
  5. Wpisz: /spark profiler stop
  6. Spark wygeneruje link do raportu online (spark.lucko.me/...)
  7. Otwórz link — zobaczysz drzewo wywołań z procentowym udziałem każdej funkcji w czasie CPU

W raporcie Spark szukaj funkcji z dużym procentem czasu CPU. Typowe winowajce to: tickEntity (za dużo entity), tickTileEntity (za dużo lejków/pistonów), nazwy pluginów w stosach wywołań.

Paper Timings

Alternatywa dla Spark, wbudowana w Paper. Wpisz /timings reset, poczekaj kilka minut, potem /timings report. Spark jest jednak dokładniejszy i nowocześniejszy — polecamy go zamiast Timings.

Najczęstsze przyczyny lagów

Po diagnozie Spark zazwyczaj znajdziesz jeden z tych problemów:

Entity spam (za dużo bytów)

Każdy mob, przedmiot leżący na ziemi, strzała, wóz — to entity. Serwer musi przeliczać każde z nich w każdym tyknięciu. Farmy zwierząt bez limitów to jeden z najczęstszych sprawców lagów. 500 krów w jednym miejscu potrafi zepchnąć TPS z 20 do 8.

Sprawdź: /spark entities lub wbudowany w Paper /paper entity. Jeśli widzisz setki entity skupionych w jednym miejscu — to problem.

Łańcuchy lejków (Hopper Chains)

Lejki (hoppers) to jedne z najbardziej obciążających elementów w Minecraft. Każdy lejek sprawdza co 8 tyknięć czy ma co przenieść — co brzmi niewinnie, ale 1000 lejków to 125 sprawdzeń na tyknięcie. Automatyczne farmy z setkami lejków potrafią same w sobie zepchnąć TPS o kilka punktów.

Redstone contraptions

Skomplikowane układy redstone, klockery (clock circuits) i flying machines generują ciągłe aktualizacje blokowe. Jeden zegar redstone w trybie ciągłym to setki aktualizacji na sekundę. Na serwerze z wieloma graczami kilka takich układów równocześnie to przepis na lag.

Ładowanie chunków

Generowanie nowych chunków to jedno z najcięższych zadań dla serwera — wymaga generowania terenu, spawnowania mob, zapisywania do dysku. Gracze eksplorujący nowe tereny mogą znacznie obciążyć serwer. Wysoki View Distance (odległość widoczności) oznacza więcej załadowanych chunków jednocześnie.

Źle zoptymalizowane pluginy

Jeden źle napisany plugin może być odpowiedzialny za 80% obciążenia CPU serwera. Szczególnie niebezpieczne są pluginy z własnym systemem harmonogramu zadań, pluginy przetwarzające każde zdarzenie gry (event listeners) bez filtrowania i pluginy robiące zapytania do bazy danych w głównym wątku.

Szybkie naprawy

Zanim zaczniesz grzebać w konfiguracjach, sprawdź te szybkie rozwiązania:

Zmniejsz View Distance

To najprostszy i najszybszy sposób na redukcję lagów. W pliku server.properties znajdź view-distance i ustaw na 6–8 (domyślnie 10). Każdy gracz zobaczy mniej chunków, co drastycznie zmniejsza liczbę załadowanych entity i aktywnego redstone.

Dla serwerów survival 6–8 chunków to rozsądny kompromis. Gracze tego nie lubią, ale wolą mniejszy widok niż lagi.

Simulation Distance

Osobna opcja od View Distance — simulation-distance w server.properties. Określa jak daleko serwer aktywnie symuluje grę (farmy, mobs, redstone). Ustaw na 4–6. Gracze widzą teren dalej, ale mechaniki gry aktywne są tylko blisko nich.

Entity limits w Paper

W paper-world-defaults.yml ustaw limity entity per chunk:

  • max-entity-collisions: 2 (domyślnie 8) — kolizje między bytami
  • per-player-mob-spawns: true — spawning mobów per gracz, nie globalnie
  • W sekcji spawn-limits w bukkit.yml: ogranicz animals: 10, monsters: 50

Ogranicz lejki

W paper-world-defaults.yml ustaw hopper-transfer: 8 i hopper-check: 1. Zmniejszy to częstotliwość sprawdzania lejków bez psucia ich funkcjonalności — tylko nieco wolniejszy transfer przedmiotów.

Natychmiastowa ulga: Jeśli serwer laguje teraz, wpisz w konsoli: /paper mspt (pokaz milisekund na tyknięcie) i /spark entities. Często jedna farma zwierząt to jedyna przyczyna.

Zaawansowana optymalizacja plików konfiguracyjnych

Po szybkich naprawach czas na głębszą optymalizację. Kluczowe pliki to paper-world-defaults.yml, paper-global.yml, spigot.yml i bukkit.yml.

paper-world-defaults.yml — kluczowe ustawienia

  • optimize-explosions: true — optymalizuje obliczenia eksplozji TNT
  • mob-spawner-tick-rate: 2 — spawner sprawdza co 2 tyknięcia zamiast co 1
  • disable-chest-cat-detection: true — wyłącza sprawdzanie kota na skrzyni
  • container-update-tick-rate: 3 — rzadsze aktualizacje interfejsu pojemników
  • grass-spread-tick-rate: 4 — wolniejsze rozprzestrzenianie trawy (niewidoczne dla graczy)
  • use-faster-eigencraft-redstone: true — szybszy algorytm redstone, eliminuje wiele zbędnych aktualizacji

spigot.yml — mob AI i zakres

  • entity-activation-range — zmniejsz zakres aktywacji AI: animals: 16, monsters: 24, misc: 8. Poza tym zakresem mobs są w trybie uśpienia
  • entity-tracking-range — zakres śledzenia entity przez klientów: players: 48, animals: 40, monsters: 48, misc: 24
  • merge-radius — łączenie leżących przedmiotów: items 2.5, exp 3.0. Zmniejsza liczbę entity na ziemi
  • mob-spawn-range: 4 — mniejszy zakres spawnowania mobów wokół gracza

Purpur — jeśli używasz

Purpur oferuje jeszcze więcej opcji optymalizacji. Warto włączyć aggressive-towards-villager-when-lagging: false i disable-treasure-searching: true, które blokują kosztowne poszukiwania skarbu przez delfinów.

Lagi od pluginów — jak znaleźć winowajcę

Jeśli Spark wskazuje na plugin jako źródło lagów, oto plan działania:

Czytanie raportu Spark pod kątem pluginów

W drzewie wywołań Spark szukaj nazw pluginów. Jeśli widzisz np. com.plugin.EpicPlugin z 60% czasu CPU — masz winowajcę. Spark grupuje wywołania i pokazuje stacktrace, więc można zobaczyć konkretną klasę i metodę.

Metoda binarnego wyłączania

Jeśli masz wiele podejrzanych pluginów: wyłącz połowę, sprawdź TPS. Jeśli TPS wzrósł — problem jest w wyłączonej połowie. Wyłącz połowę z tej grupy — i tak dalej. Metodą połówkową w 5 krokach znajdujesz winowajcę spośród 32 pluginów.

Typowe problemy z pluginami

  • EssentialsX — stary spawn egg handler, przy dużej liczbie graczy może być wolny. Aktualizuj do najnowszej wersji
  • WorldGuard — z dużą liczbą regionów i wieloma graczami może mieć problemy. Ogranicz liczbę regionów, używaj parent regions
  • Dynmap — renderowanie mapy to kosztowna operacja. Ustaw updateperiod: 60 i renderacceleratethreshold: 1
  • AntiCheat pluginy — sprawdzają każdy ruch każdego gracza. AAC, Matrix, Vulcan — każdy ma inny koszt CPU. Sprawdź ich konfiguracje i wyłącz drogie checki
  • Pluginy ekonomii z bazą danych — jeśli robią synchroniczne zapytania SQL w main thread, to prosto droga do TPS spike'ów

Uwaga: Aktualizacja pluginów to często darmowe zwiększenie wydajności. Deweloperzy regularnie naprawiają problemy z wydajnością w nowszych wersjach.

RAM — ile potrzebujesz

Więcej RAM nie zawsze rozwiązuje lagi TPS — to częsty błąd administratorów. RAM jest ważny dla płynnego działania JVM, ale TPS lag to problem CPU, nie pamięci. Zbyt dużo RAM może paradoksalnie pogorszyć sytuację przez długie pauzy garbage collectora (GC).

Liczba graczy Zalecany RAM Uwagi
1–10 graczy 2–3 GB Vanilla/Paper, bez dużych modpacków
10–20 graczy 4 GB Paper z pluginami survival
20–50 graczy 6–8 GB Wiele pluginów, minigry, duże światy
50–100 graczy 10–12 GB Proxy + wiele serwerów lub duże pluginy
100+ graczy 16+ GB Wymagane środowisko multi-server (BungeeCord/Velocity)

Optymalizacja flag startowych JVM

Flagi startowe JVM mają ogromny wpływ na wydajność. Używaj flag Aikar's Flags — to sprawdzony zestaw optymalizacji garbage collectora G1GC stworzony specjalnie dla Minecraft:

Przykład dla 8 GB RAM:

java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar server.jar nogui

Ustaw -Xms i -Xmx na tę samą wartość — unikasz fragmentacji pamięci i zmuszasz JVM do wstępnego przydzielenia całego heapa.

Antylag pluginy

Dobry dobór pluginów może znacznie poprawić wydajność. Oto najważniejsze narzędzia:

Spark — profiler i monitor

Obowiązkowy na każdym serwerze. Poza profilowaniem lagów, Spark oferuje:

  • /spark tps — szczegółowe TPS z historią
  • /spark health — przegląd stanu serwera
  • /spark entities — liczba entity per typ per świat
  • Alerty Discord gdy TPS spada poniżej progu

ClearLagg

Regularnie usuwa zalegające przedmioty i niezjadane doświadczenie z podłogi. Konfiguruj interwał (np. co 5 minut z ostrzeżeniem dla graczy). Nie rozwiązuje przyczyny lagów, ale łagodzi objawy. Warto połączyć z limitem entity per chunk.

FarmControl

Ogranicza liczbę zwierząt na farmach i w obszarach gracza. Konfigurowalny limit per typ moba per obszar. Gdy gracz ma za dużo krów w jednym miejscu, FarmControl nie pozwala hodować więcej — i automatycznie usuwa nadmiar. Bardzo skuteczny na serwerach survival z dużymi farmami.

Chunky — pre-generacja świata

Chunky generuje z wyprzedzeniem teren świata, zanim gracze do niego dotrą. Pre-generacja eliminuje ciężkie spike'i TPS przy eksploracji nowych chunków. Uruchom Chunky raz po starcie serwera:

/chunky start world 0 0 10000

To wygeneruje 10 000 bloków we wszystkich kierunkach od spawnpointu. Operacja może trwać kilka godzin — uruchom ją gdy serwer jest pusty.

Pufferfish / Purpur

To nie pluginy, ale alternatywne forki serwerowe bazujące na Paper. Pufferfish i Purpur zawierają wbudowane optymalizacje niedostępne w podstawowym Paper — w tym DEAR (Dynamic Activation of Brain), które znacznie redukuje koszt AI mobów z dala od graczy.

Powiązane strony