Przejdź do treści
CraftRadar
Redakcja serwisu

Jak uniknąć crashy serwera Minecraft — diagnostyka i prewencja

Crash to zwykle objaw głębszego problemu — pamięci, pluginu albo świata. Pokazujemy, jak czytać crash reporty Papera i jak chronić serwer przed nagłymi zatrzymaniami.

Crash serwera Minecraft to nagłe zatrzymanie się procesu Java z błędem. Dla graczy to wylogowanie wszystkich naraz, czasem utrata postępu z ostatnich minut. Dla właściciela — alarm w Discord o 3:00 nad ranem. Crashe są zwykle objawem głębszego problemu, ale mają konkretne, powtarzające się przyczyny i metody zapobiegania.

Jak uniknąć crashy serwera Minecraft – snapshot Minecrafta na serwerze Minecraft

Rodzaje crashy

  1. OutOfMemoryError — Java skończyła RAM. Najczęstszy.
  2. StackOverflowError — nieskończona rekurencja w pluginie.
  3. NullPointerException — błąd w pluginie.
  4. ConcurrentModificationException — wątek zmodyfikował kolekcję, którą inny wątek iteruje.
  5. SIGSEGV / native crash — błąd na poziomie JVM/OS.

OutOfMemoryError — najczęstszy

Java zużyła cały dostępny heap. Symptomy:

  • w logu java.lang.OutOfMemoryError: Java heap space,
  • serwer się zatrzymuje,
  • pliki java_pid*.hprof (heap dumps) w katalogu serwera.

Naprawy:

  • zwiększ -Xmx w startup (np. 4G → 6G),
  • znajdź wyciek pamięci sparkiem (/spark heapdump),
  • zaktualizuj problematyczne pluginy.

Watchdog Papera

Paper ma wbudowany watchdog. Jeśli serwer zawiesza się na ponad 60 sekund (timeout konfigurowalny), watchdog zabija proces i loguje:

The server has stopped responding!
This is most likely not an issue caused by Minecraft itself.

W spigot.yml:

settings:
  timeout-time: 60
  restart-on-crash: true
  restart-script: ./start.sh

Plus skrypt start.sh w katalogu serwera, który ponownie uruchamia Javę po crashu.

Auto-restart przez systemd

Bardziej niezawodne niż restart-script. Plik /etc/systemd/system/minecraft.service:

[Unit]
Description=Minecraft Paper Server
After=network.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/srv/minecraft
ExecStart=/usr/bin/java -Xms6G -Xmx6G -jar paper.jar --nogui
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

Po crashu systemd restartuje serwer w 10 sekund. Bez interwencji właściciela.

Powiadomienia o crashach

Bash skrypt monitorujący proces Java + webhook Discord:

#!/usr/bin/env bash
while true; do
  if ! pgrep -f "paper.jar" > /dev/null; then
    curl -X POST -H 'Content-Type: application/json' \
      -d '{"content":"⚠️ Serwer Minecraft padł! Restartowanie..."}' \
      "$DISCORD_WEBHOOK_URL"
  fi
  sleep 30
done

Albo użyj Healthchecks.io — serwer pinguje serwis co minutę, brak pingu = alert.

Jak uniknąć crashy serwera Minecraft – świat Minecraft na serwerze Minecraft

Diagnostyka po crashu

Po crashu Paper tworzy crash-reports/ z plikiem crash-2026-XX-XX_XX.XX.XX-server.txt. Otwórz, sprawdź sekcję „Description" i stack trace.

Najczęstsze wpisy:

  • at me.somePlugin.SomeClass.method() — wina pluginu „somePlugin".
  • java.lang.OutOfMemoryError — heap dump w java_pid*.hprof.
  • EXCEPTION_ACCESS_VIOLATION — błąd JVM (zaktualizuj Javę).

Prewencja

Aktualizacje

Pluginy + Paper aktualizuj co 2 tygodnie. 70% crashy to znane bugi naprawione w nowszych wersjach.

RAM z buforem

Daj Javie 60% RAM-u VPS-a, nie 100%. System też potrzebuje pamięci. -Xms = -Xmx = stałe alokacje, brak fragmentacji.

Aikar Flags

Standardowe JVM Aikar Flags dramatycznie zmniejszają OutOfMemoryError'y. G1GC z optymalnymi parametrami.

Limit entity

Zbyt dużo entity (5000+) → pamięć wybucha. FarmLimiter + per-player-mob-spawns.

Backupy

Każdy crash to potencjalna utrata postępu z ostatnich 5 minut. Backup co godzinę = maks 1h utraconej pracy.

Problematyczne pluginy

Niektóre pluginy znane są z crashy:

  • stare wersje WorldEdit (2018-2019) — race conditions,
  • pluginy używające ProtocolLib bez aktualizacji,
  • customowe pluginy bez try-catch,
  • pluginy z bezpośrednim modyfikowaniem NMS w nowych wersjach Minecrafta.

Po każdym crashu sprawdź, jaki plugin jest w stack trace. Zaktualizuj lub usuń.

Heap dump — analiza wycieku

Jeśli crash OutOfMemoryError się powtarza, włącz auto-dump:

java -XX:+HeapDumpOnOutOfMemoryError \
     -XX:HeapDumpPath=./dumps \
     -Xms6G -Xmx6G \
     ...

Po crashu plik java_pid*.hprof pokaże, jakie obiekty zajmowały najwięcej. Otwórz w Eclipse MAT lub IntelliJ Memory Analyzer.

Środowisko testowe

Nigdy nie aktualizuj pluginów bezpośrednio na produkcji. Stwórz drugi (testowy) serwer z kopią świata. Aktualizuj tam, testuj 2–3 dni, potem produkcja.

To 1 godzina dodatkowej pracy, która oszczędza dziesiątki godzin sprzątania po crashach.

Podsumowanie

Crashy nie da się wyeliminować całkowicie. Ale 95% z nich można uniknąć przez Aikar Flags, wystarczający RAM, watchdog z auto-restartem, regularne aktualizacje pluginów, środowisko testowe i monitorowanie.

Najgorszy scenariusz — crash o 3:00 nad ranem, brak auto-restartu, gracze patrzą na pusty serwer do rana. Najlepszy — crash w 5 sekund po, systemd uruchomił ponownie, gracze zauważyli „chwilowy laga". Różnica zwykle to 1 plik .service.

Dodaj serwer

Wpisz adres serwera Minecraft, aby dodać go do listy. Dodanie jest darmowe.

Nie masz jeszcze serwera? Zobacz, jak go założyć.