Pytanie o ilość RAM na serwer Minecraft wraca u nas niemal codziennie. Najczęściej w wersji "kup mi 16 GB, to będzie szybko działać". Otóż nie zawsze będzie. RAM to nie magiczny suwak wydajności, a serwer Minecraft potrafi się dławić przy 32 GB i śmigać przy 6 GB, jeśli reszta układanki jest dobrze ustawiona.
W tym wpisie rozkładamy temat na czynniki pierwsze: ile pamięci realnie zjada vanilla, Paper, serwer z pluginami i ciężki modpack Forge albo Fabric. Pokazujemy widełki według liczby graczy, tłumaczymy, czemu za dużo RAM bywa szkodliwe (tak, przez garbage collector), i jak zmierzyć faktyczne zużycie zamiast zgadywać.
Od czego naprawdę zależy zużycie RAM
Zacznijmy od nieoczywistego: liczba graczy to nie jest główny pożeracz pamięci. Owszem, ma znaczenie, ale serwer Minecraft trzyma w RAM przede wszystkim załadowane chunki (fragmenty świata) i wszystko, co się w nich dzieje, czyli entity, bloki tile-entity (skrzynie, piece, hoppery), dane mobów i logikę redstone.
Kluczowe czynniki w kolejności wpływu:
- Typ serwera: vanilla, Paper, modpack. Różnica bywa dziesięciokrotna.
- View-distance i simulation-distance: ile chunków serwer ładuje i symuluje wokół każdego gracza.
- Liczba i rozproszenie graczy: dziesięciu graczy w jednej bazie to zupełnie inne obciążenie niż dziesięciu rozsianych po całej mapie.
- Pluginy i mody: niektóre dorzucają sztuczną inteligencję, generowanie struktur, dodatkowe wymiary i własne bazy w pamięci.
Ważne rozróżnienie, o które ciągle ktoś pyta. Główna pętla świata w Minecraft (Java Edition) działa jednowątkowo. To znaczy, że szybki procesor i więcej RAM nie sprawią, że tick świata policzy się na kilku rdzeniach naraz. Cel to 20 TPS (ticków na sekundę), co odpowiada MSPT poniżej 50 ms (czasu na jeden tick). Jeśli MSPT przekracza 50 ms, TPS spada i pojawia się lag. RAM pomaga uniknąć innego problemu, czyli przerw na czyszczenie pamięci, ale samego ticka nie przyspieszy.
Widełki RAM według typu serwera i liczby graczy
Poniższe wartości to pamięć przydzielona maszynie wirtualnej Javy (parametry -Xmx), już z zapasem. Zakładamy rozsądny view-distance (8 do 10) i nowoczesny silnik.
Vanilla i Paper (bez modów)
| Gracze | Vanilla | Paper / Purpur |
|---|---|---|
| 1 do 5 | 2 do 3 GB | 2 GB |
| 5 do 15 | 4 do 5 GB | 3 do 4 GB |
| 15 do 40 | 6 do 8 GB | 4 do 6 GB |
| 40 do 100 | 10 GB i więcej | 6 do 10 GB |
Paper i jego pochodne (Purpur, Pufferfish) zużywają mniej pamięci i mniej CPU niż czyste vanilla, bo mają lepszą obsługę entity, lazy-loading chunków i sensowne wartości domyślne. Jeśli prowadzisz survival ze znajomymi, Paper z 4 GB obsłuży kilkunastu graczy bez zadyszki.
Serwer z pluginami (Spigot/Paper + kilkanaście wtyczek)
Dorzuć 0,5 do 2 GB ponad wartości dla czystego Paper, zależnie od ciężaru pluginów. WorldGuard, Essentials czy proste minigry kosztują niewiele. Inaczej jest z dynamicznymi mapami (Dynmap, BlueMap), które renderują świat i potrafią same zjeść 1 do 2 GB. Dla typowego serwera survival z ekonomią, ochroną terenu i mapą online dobrze sprawdza się 6 do 8 GB.
Modpacki Forge i Fabric
Tu skala robi się inna. Modpacki dokładają nowe wymiary, setki bloków, maszyny, automatyzację i własne struktury generowane w świecie.
- Lekki modpack (do około 80 modów): 4 do 6 GB.
- Średni modpack (popularne paczki technologiczno-magiczne): 6 do 10 GB.
- Ciężki modpack (200+ modów, typu kitchen-sink): 8 do 14 GB, czasem więcej.
Fabric bywa lżejszy od Forge przy podobnej zawartości, bo sam loader jest cieńszy. Ale to zawartość paczki decyduje, nie sam loader. Modpack z agresywnym generowaniem światów (mnóstwo struktur, biomy z modów) potrafi zżerać RAM przy każdym graczu wchodzącym w nieodkryty teren. Szczegóły hostowania paczek rozbieramy w osobnym tekście o hostingu Minecraft z modami Forge i Fabric.
Narzut JVM, czyli ile RAM znika zanim świat się załaduje
Serwer Minecraft działa na maszynie wirtualnej Javy, a ta ma własny apetyt, niezależny od świata. Na sam start JVM rezerwuje pamięć na:
- Metaspace: definicje klas, zwłaszcza istotny przy modpackach z tysiącami klas.
- Bufory off-heap: sieć, kompresja, operacje na chunkach.
- Stosy wątków i wewnętrzne struktury silnika.
W praktyce oznacza to, że jeśli przydzielisz procesowi 6 GB przez -Xmx, to cały kontener czy maszyna potrzebuje raczej 7 do 8 GB, żeby system operacyjny też miał oddech. Dlatego na VPS z dokładnie 8 GB RAM nie ustawiaj -Xmx8G, bo zostawisz system bez zapasu i pierwszy skok pamięci skończy się ubiciem procesu przez mechanizm OOM. Zostaw około 1 do 1,5 GB dla systemu i samego narzutu JVM. Jeśli zastanawiasz się, czy w ogóle brać maszynę wirtualną pod serwer, porównujemy podejścia w artykule hosting gry czy VPS.
Dlaczego za dużo RAM nie pomaga (a bywa, że szkodzi)
To najczęstsze nieporozumienie. Logika "dam 24 GB, będzie szybciej" zawodzi z powodu garbage collectora (GC), czyli mechanizmu odzyskiwania nieużywanej pamięci w Javie.
Im większa sterta (heap), tym więcej obiektów GC musi przejrzeć podczas sprzątania. Przy bardzo dużych przydziałach i źle dobranym kolektorze zdarzają się długie pauzy GC, podczas których cały serwer zamiera na kilkadziesiąt, a nawet kilkaset milisekund. Gracze odczuwają to jako mikroprzycięcia albo nagły skok lagu "z niczego", mimo że TPS w spoczynku jest idealny.
Stąd dwie praktyczne zasady:
- Nie przydzielaj więcej, niż serwer realnie potrzebuje. Dodatkowe 8 GB ponad faktyczne zużycie nie da Ci nic, a może wydłużyć pauzy.
- Używaj sensownych flag startowych. Tu z pomocą przychodzą Aikar's flags, czyli zestaw parametrów uruchomieniowych strojących kolektor G1GC. Wymuszają częstsze, krótsze sprzątanie zamiast rzadkich i długich przerw. Dla większości serwerów to najlepszy punkt startu.
Na nowszych wersjach Javy (17 i wyżej) alternatywą bywają nowoczesne kolektory o niskich pauzach, ale dla typowego serwera dobrze nastrojony G1GC z flagami Aikara w zupełności wystarcza. Jeżeli serwer zwalnia mimo zapasu pamięci, problemem prawie nigdy nie jest "za mało RAM", tylko coś innego, co rozbieramy w tekście dlaczego serwer Minecraft laguje.
View-distance i simulation-distance: cichy mnożnik pamięci
To dwa ustawienia w server.properties, które potrafią zrobić największą różnicę przy najmniejszym wysiłku.
- view-distance określa, ile chunków wokół gracza serwer wysyła do klienta, czyli jak daleko widać.
- simulation-distance określa, ile chunków wokół gracza serwer faktycznie symuluje: rośnięcie roślin, ruch mobów, redstone, tykanie maszyn.
Liczba ładowanych chunków rośnie z kwadratem promienia. Zwiększenie view-distance z 8 na 16 to nie dwukrotnie, lecz mniej więcej czterokrotnie więcej chunków na gracza. Przy kilkudziesięciu graczach to dramatyczna różnica w zużyciu RAM i CPU.
Nasze praktyczne ustawienia:
- view-distance 8 do 10 dla większości serwerów. Wartości powyżej 12 rzadko mają sens przy wielu graczach.
- simulation-distance 4 do 6. To ono najmocniej obciąża procesor, bo dotyczy żywej symulacji. Można je trzymać niżej niż view-distance, gracze i tak zobaczą odległy teren, po prostu nie będzie się on aktywnie symulował.
Na serwerze, który zaczyna lagować przy większej liczbie graczy, obniżenie simulation-distance o jeden czy dwa to często najszybsza i najtańsza poprawa, bez dorzucania ani jednego gigabajta.
Jak zmierzyć realne zużycie RAM zamiast zgadywać
Najlepsza odpowiedź na pytanie "ile RAM" to pomiar na własnym świecie, bo Twój modpack i Twoja mapa są unikalne.
Spark to nasze podstawowe narzędzie. To plugin lub mod profilujący, który pokazuje rozkład zużycia pamięci, aktywność GC, czas ticków i to, co najbardziej obciąża serwer. Komendy w stylu /spark health i /spark profiler dają konkretne dane zamiast wrażeń.
Co obserwować:
- Zużycie heap w spoczynku i pod obciążeniem. Jeśli przy pełnym serwerze pamięć stabilizuje się przy 60 do 70 procent przydziału i nie ociera się stale o sufit, masz dobrze dobrany rozmiar.
- Częstotliwość i długość pauz GC. Krótkie, regularne sprzątanie jest w porządku. Długie pauzy, podczas których spada TPS, to sygnał do strojenia flag, a nie do dokładania RAM.
- MSPT, nie tylko TPS. TPS może pokazywać 20, a MSPT już sięgać 40 ms tuż pod progiem lagu. To ostrzeżenie, że zbliżasz się do granicy mocy.
Praktyczna reguła kciuka: jeśli serwer po godzinach gry stabilnie używa znacznie mniej, niż przydzieliłeś, i nie ma długich pauz GC, masz za dużo RAM, możesz go obniżyć. Jeśli pamięć ciągle dobija do maksimum, a GC szaleje, to dopiero wtedy realny powód, żeby dołożyć.
Szybka ściąga: od czego zacząć
- Survival ze znajomymi (do 10 osób), Paper: 4 GB, view-distance 10, simulation-distance 6.
- Średni serwer publiczny z pluginami i mapą online: 6 do 8 GB.
- Modpack technologiczny dla paczki graczy: 8 do 10 GB, pilnuj Metaspace.
- Ciężki modpack kitchen-sink: 10 do 14 GB, koniecznie z flagami Aikara.
Do każdej z tych wartości dołóż zapas dla systemu i narzutu JVM, nie ustawiaj -Xmx równo z całą dostępną pamięcią maszyny.
Jeśli zaczynasz od zera i nie chcesz strzelać na ślepo, w naszym konfiguratorze hostingu dobierzesz pamięć pod konkretny typ serwera i liczbę graczy, a paczkę modów z gotowymi flagami uruchomimy bez ręcznego strojenia. Po stronie wyboru samego dostawcy pomoże poradnik jak wybrać hosting Minecraft, a jeśli serwer mimo zapasu pamięci wciąż się tnie, sprawdź, dlaczego serwer Minecraft laguje.
Na koniec jedno zdanie, które warto zapamiętać. Dobrze dobrany serwer to nie ten z największą liczbą gigabajtów, tylko ten, który mieści się w swoim RAM z niewielkim zapasem, sprząta pamięć krótkimi pauzami i utrzymuje MSPT poniżej pięćdziesięciu milisekund. Reszta to już strojenie szczegółów.
Zespół NobleNodes