Ile RAM potrzebuje serwer Minecraft?
Większości serwerów na Paper wystarcza od 3 do 8 GB heapu: 3 lub 4 GB dla grupy znajomych, 5 lub 6 GB dla 20 czy 30 graczy ze zwykłym zestawem pluginów i 8 GB lub więcej powyżej 50 graczy. Plan, który wynajmujesz, musi być trochę większy, bo Java używa też pamięci poza heapem.
| Graczy online | Pluginów | Minimum | Zalecane | Plan lub kontener |
|---|---|---|---|---|
| 5 | 10 | 2 GB | 3 GB | 4 GB |
| 10 | 15 | 3 GB | 4 GB | 5 GB |
| 20 | 25 | 3 GB | 5 GB | 6 GB |
| 30 | 40 | 4 GB | 6 GB | 7 GB |
| 50 | 50 | 5 GB | 8 GB | 10 GB |
| 100 | 80 | 8 GB | 13 GB | 15 GB |
Kalkulator powyżej robi to samo wyliczenie z twoimi liczbami. Traktuj wynik jako punkt wyjścia: realne zużycie zależy od tego, jak bardzo gracze są rozproszeni, od view distance i od tego, co robi każdy plugin.
Jak liczony jest szacunek
Kalkulator sumuje heap, czyli pamięć, którą Java daje Minecraftowi (tę, którą ustawiasz przez -Xmx):
- 2 GB bazowo dla Paper albo Purpur z załadowanymi światami i nikim online. Folia zaczyna od 3 GB, bo jest stworzona dla wielu graczy rozproszonych po mapie.
- 75 MB na każdego gracza online naraz. Każdy gracz trzyma załadowane chunki wokół siebie, razem z mobami i przedmiotami w nich. Gracze rozproszeni po świecie kosztują więcej niż gracze stojący razem w lobby.
- 40 MB na plugin, średnio. Większość pluginów zużywa dużo mniej, a kilka dużo więcej.
- 2 GB więcej na ciężkie pluginy lub duży świat: mapy webowe (Dynmap, BlueMap), własne modele (ItemsAdder, ModelEngine), dużo mobów lub farm albo view distance powyżej 10.
- Trzy czwarte sumy na 1.8 do 1.11, gdzie chunki są lżejsze.
Wynik jest zaokrąglany w górę do pełnych GB i nigdy nie spada poniżej 3 GB (2 GB na 1.8 do 1.11). Minimum to około dwóch trzecich tej wartości: serwer działa, ale ma mało zapasu na ruchliwe momenty, generowanie nowych chunków czy backupy. Kalkulator kończy na 31 GB, bo powyżej ok. 32 GB Java wyłącza skompresowane wskaźniki obiektów, a lekkie przekroczenie tej granicy daje mniej użytecznej pamięci, nie więcej.
Te liczby są celowo zawyżone. Gdy brakuje pamięci, serwer zaczyna się zacinać, a potem crashuje, a trochę za dużo kosztuje tylko nieco więcej co miesiąc.
Zostaw miejsce dla Javy: heap a plan
-Xmx ogranicza tylko heap. Java używa też pamięci na klasy każdego pluginu, swoje wątki, kompilowany kod, bufory sieciowe i wewnętrzną księgowość garbage collectora. Kalkulator zostawia na to 1 GB albo 15 % heapu, zależnie od tego, co jest większe, zgodnie z radą Papera, żeby dać -Xmx o 1000 do 1500 MB mniej niż pamięć, którą masz. W praktyce:
- Wynajmujesz plan: kieruj się rozmiarem planu, który pokazuje kalkulator, a nie heapem. Heap 8 GB potrzebuje planu 10 GB.
- Masz już plan: wpisz go w RAM twojego planu, a flagi zostaną dobrane tak, żeby się w nim zmieścić. Plan 8 GB zostawia heap 6,5 GB.
- Pterodactyl, Docker i większość hostingów ograniczają cały kontener. Jeśli Java przekroczy limit, serwer zostaje natychmiast zabity, często bez żadnego błędu w konsoli.
- Własny PC albo VPS: zostaw pamięć dla systemu i wszystkiego, co jeszcze na nim działa.
Dlaczego -Xms równa się -Xmx
Flagi Aikara dają -Xms i -Xmx tę samą wartość i dodają -XX:+AlwaysPreTouch, które rezerwuje cały heap przy starcie serwera. G1 działa lepiej z heapem, który nigdy nie rośnie ani się nie kurczy, a jeśli pamięci tak naprawdę nie ma, dowiesz się o tym przy starcie. Efekt uboczny: wykres pamięci w panelu pokazuje cały heap jako zajęty od pierwszej minuty. Tak ma być.
Flagi Aikara i ZGC
Flagi Aikara dostrajają garbage collector G1 do tego, jak Minecraft używa pamięci: ogromne ilości obiektów, które żyją jeden tick, i pauzy, które muszą być krótkie. Paper je poleca i pasują do serwerów każdej wielkości. Powyżej 12 GB heapu kalkulator przełącza się na wartości Aikara dla dużego heapu: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M, G1ReservePercent=15 i InitiatingHeapOccupancyPercent=20.
ZGC to inny collector, który robi prawie całą pracę w trakcie działania serwera, więc pauzy trwają poniżej milisekundy. W zamian zużywa więcej CPU i ma sens tylko przy dużym heapie (16 GB lub więcej) i wolnych rdzeniach. Używaj wersji generacyjnej: na Javie 21 wymaga -XX:+ZGenerational, a od Javy 23 jest domyślna, więc kalkulator pomija tę flagę. Jeśli nie masz pewności, zostań przy G1.
Która wersja Javy
| Minecraft | Java |
|---|---|
| 26.1 i nowsze | 25 |
| 1.20 – 1.21.11 | 21 |
| 1.17 – 1.19.4 | 17 |
| 1.16.5 | 16 |
| 1.12 – 1.16.4 | 11 |
| 1.8 – 1.11 | 8 |
To tabela z dokumentacji Papera. Sprawdź, którą masz, przez java -version. Jeśli masz zainstalowanych kilka, skrypt uruchomi tę, którą odpala komenda java.
Uruchamianie serwera
- Wpisz graczy, pluginy, silnik i wersję, a także RAM swojego planu, jeśli już go masz.
- Wybierz Skrypt startowy:
- start.sh na Linuxa i macOS. Zapisz go obok pliku jar, raz wpisz
chmod +x start.sh, a potem./start.sh. - start.bat na Windowsa. Zapisz go obok pliku jar i kliknij dwukrotnie.
pausena końcu trzyma okno otwarte, jeśli serwer się zatrzyma, więc możesz przeczytać błąd. - Pterodactyl daje komendę startową z
{{SERVER_JARFILE}}, żeby panel sam wstawił plik jar. Potem ustaw w panelu pamięć serwera na co najmniej rozmiar planu. - Same flagi są dla hostingów z polem na argumenty JVM. Jeśli hosting sam ustawia pamięć, usuń
-Xmsi-Xmx.
- start.sh na Linuxa i macOS. Zapisz go obok pliku jar, raz wpisz
- Kliknij Kopiuj. Kopiuj link zapisuje twoje ustawienia w linku.
Kiedy więcej RAM nie pomoże
Lagi zwykle biorą się z CPU: zwykły serwer robi większość pracy na jednym głównym wątku, więc szybszy rdzeń pomaga bardziej niż dodatkowa pamięć. Zanim zrobisz upgrade, wpisz /spark health, żeby zobaczyć pamięć i TPS, oraz /spark profiler, żeby zobaczyć, co zajmuje czas. spark jest wbudowany w Paper od 1.21. Zmniejszenie view-distance i simulation-distance oszczędza jednocześnie pamięć i CPU, a wcześniejsze wygenerowanie świata pluginem takim jak Chunky pozwala uniknąć skoków przy generowaniu nowych chunków w trakcie gry.