SSD Nodes Learn 🎉 VPS od $5.50/mies.
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-13

Jaki VPS pod serwer gier wybrać? Poradnik techniczny

Dowiedz się, jakie parametry VPS są kluczowe dla serwera gier. Wyjaśniamy, dlaczego wysokie taktowanie pojedynczego rdzenia i niska latencja są ważniejsze niż liczba wątków.

O jaki rodzaj VPS do gier chodzi?

VPS pod serwer gier to dobry wybór do jednego zadania: uruchomienia dedykowanego serwera, z którym użytkownik oraz jego znajomi łączą się ze swoich własnych maszyn. Jest to natomiast zły wybór do drugiego zastosowania, o którym często myślą użytkownicy, czyli grania bezpośrednio na VPS za pośrednictwem pulpitu zdalnego. Te dwa zadania wymagają przeciwstawnych zasobów sprzętowych. Serwer dedykowany potrzebuje jednego szybkiego rdzenia CPU oraz wystarczającej ilości pamięci RAM do obsłużenia świata gry. Granie wymaga GPU (jednostki przetwarzania grafiki), a standardowy plan VPS go nie posiada.

Wszystkie poniższe informacje dotyczą pierwszego zastosowania. Drugiemu warto poświęcić dwie minuty uwagi, ponieważ wiele osób kupuje w tym celu niewłaściwą maszynę.

Dlaczego na VPS nie można uruchamiać gier

Standardowy VPS udostępnia wirtualne rdzenie procesora i nie posiada karty graficznej. Z fizycznego hosta nie jest przekazywane żadne urządzenie, więc gra nie ma dostępu do sprzętowego akceleratora graficznego. Można sprawdzić, co jest faktycznie dostępne:

sudo apt install -y pciutils
lspci | grep -iE "vga|3d"

Odpowiedzią jest wirtualny adapter ekranu, taki jak Cirrus Logic lub urządzenie virtio GPU. Istnieje on po to, aby konsola internetowa dostawcy mogła wyświetlić obraz, ale nie posiada zaplecza do akceleracji 3D. Po zainstalowaniu środowiska graficznego i serwera VNC, glxinfo -B zgłasza renderer jako llvmpipe, czyli programowy renderer Mesa działający na procesorze. Nowoczesna gra 3D renderowana przez procesor osiąga zaledwie kilka klatek na sekundę, co czyni ją niegrywalną jeszcze przed wysłaniem obrazu z serwera. Instancje Windows napotykają ten sam problem z innej strony. Wiele tytułów kończy działanie przy uruchomieniu, zgłaszając błąd braku możliwości utworzenia urządzenia Direct3D, ponieważ nie ma adaptera ekranu, na którym można by je zainicjować.

Drugim problemem jest droga powrotna do użytkownika. Granie na zdalnej maszynie oznacza, że każda klatka musi zostać zakodowana do formatu wideo, wysłana przez Internet i zdekodowana na ekranie odbiorcy. Dodaje to czas kodowania i dekodowania do opóźnień wejściowych samej gry, a protokoły RDP i VNC zostały zaprojektowane do pracy biurowej, a nie do przesyłania płynnego obrazu o prędkości 60 klatek na sekundę. Usługi grania w chmurze rozwiązują ten problem dzięki fizycznym układom GPU i dedykowanym protokołom strumieniowania. Zwykły VPS nie posiada żadnego z tych elementów. Jeśli chcesz grać, wynajmij moc obliczeniową GPU. Jeśli chcesz hostować usługi, czytaj dalej.

Czego faktycznie wymaga dedykowany serwer gier

Serwer gier to pętla symulacyjna. Utrzymuje on stan świata w pamięci i aktualizuje go określoną liczbę razy na sekundę. Każdemu podłączonemu graczowi wysyłana jest następnie ta część świata, którą może on zobaczyć.

Ten model decyduje o wymaganiach sprzętowych. Pętla działa głównie na jednym wątku, dlatego szybkość rdzenia jest ważniejsza niż ich liczba. Świat znajduje się w pamięci RAM, która zazwyczaj stanowi pierwsze ograniczenie wydajności. Dysk jest mało obciążony w trakcie gry, natomiast intensywnie pracuje podczas ładowania i zapisywania stanu. Ścieżka sieciowa determinuje ping i żaden plan taryfowy tego nie zmieni.

Wydajność pojedynczego rdzenia przewyższa liczbę rdzeni

Większość serwerów gier przetwarza świat gry w ramach jednego głównego wątku. Pętla ticków w Minecraft oraz ramki serwera w silniku Source działają w ten sposób. Każdy tick ma określony limit czasu. Minecraft Java działa z częstotliwością 20 ticków na sekundę, co przydziela na każdy tick budżet 50 milisekund. Gdy obliczenia nie mieszczą się w tym czasie, serwer wyświetla dokładnie taki komunikat:

[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind

Ten wiersz oznacza, że jeden wątek przekroczył limit czasu. Dodanie kolejnych rdzeni nie zwiększy czasu dostępnego dla tego wątku. Plan z 2 szybkimi vCPU utrzyma stabilny tick rate, podczas gdy plan z 8 wolnymi vCPU spowoduje spadki, ponieważ tylko jeden z tych 8 rdzeni wykonuje kluczową pracę.

Przed podjęciem decyzji należy zmierzyć wydajność pojedynczego wątku:

sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Należy odczytać wiersz events per second. Sama liczba nie ma znaczenia, staje się użyteczna dopiero w porównaniu, dlatego należy uruchomić test na dwóch rozważanych planach i zestawić wyniki. Pełny benchmark VPS obejmuje w ten sam sposób testy dysku i sieci.

Dodatkowe rdzenie nadal mają swoje zastosowanie. Obsługują drugi serwer gry, bazę danych, nocne kopie zapasowe oraz pre-generowanie chunków, nie zabierając czasu głównemu wątkowi ticków. Oprogramowanie serwerowe również nauczyło się rozpraszać obciążenie, a Paper, popularny fork serwera Minecraft, przenosi część zadań poza główny wątek ticków. Dlatego optymalnym wyborem jest kilka szybkich rdzeni, a nie wiele wolnych.

Na stronie z ofertą nigdy nie pojawia się jedna liczba, która decyduje o tym, czy opłacony szybki rdzeń jest faktycznie do dyspozycji użytkownika:

vmstat 1 5

Kolumna st oznacza procent czasu, w którym wirtualny procesor był gotowy do pracy, ale fizyczny host przydzielił rdzeń komuś innemu. Stała wartość st powyżej kilku procent oznacza, że host jest przesycony (oversold). Gracze odczują to jako zacięcia (stutter), podczas gdy top na serwerze nadal będzie wskazywać bezczynność procesora, ponieważ ten czas bezczynności nie jest dostępny dla użytkownika.

Ile pamięci RAM potrzebuje serwer gier?

ChartCommon starting RAM per game server (published guidance, not a measurement)
The data behind this chart
[
  {
    "label": "Minecraft Java, vanilla",
    "players": 10,
    "ram_gb": 2
  },
  {
    "label": "Minecraft Java, large modpack",
    "players": 10,
    "ram_gb": 8
  },
  {
    "label": "Valheim",
    "players": 10,
    "ram_gb": 4
  },
  {
    "label": "Palworld",
    "players": 32,
    "ram_gb": 16
  }
]

Są to początkowe alokacje publikowane w dokumentacji gier i modpacków według stanu na sierpień 2026 roku. Stanowią one wskazówkę, a nie wartości zmierzone na konkretnej maszynie. Vanilla Minecraft Java działa stabilnie z 2 GB pamięci sterty dla około 10 graczy. Ta sama liczba graczy przy dużym modpacku wymaga 8 GB, ponieważ mody dodają byty i generowane struktury, które są przechowywane w tej stercie. Minimalne wymagania dla Valheim to 2 GB, jednak operatorzy z małymi światami zgłaszają zużycie procesu bliższe 3 GB, dlatego 4 GB jest rozsądną wartością na start. Palworld jest wyjątkiem, wymagającym 16 GB dla maksymalnie 32 graczy, zgodnie z zaleceniami Pocketpair.

Pamięć RAM nie skaluje się wraz z liczbą połączeń. Skaluje się wraz z załadowanym światem. Każdy gracz utrzymuje załadowany region wokół siebie, więc dwóch graczy przebywających w jednym miejscu zużywa znacznie mniej zasobów niż dwóch graczy eksplorujących przeciwległe krańce mapy. Dlatego „RAM na gracza” jest tylko przybliżonym wyznacznikiem, podczas gdy „RAM na aktywny obszar” jest rzeczywistym czynnikiem obciążającym. Z tego powodu mała grupa lubiąca eksplorację może przekroczyć zasoby planu obliczonego dla dwukrotnie większej liczby osób.

Serwery Java wymagają przestrzegania dwóch dodatkowych zasad. Ustaw minimalną i maksymalną wielkość sterty na tę samą wartość, aby JVM nigdy nie wstrzymywał pracy w celu jej zmiany:

java -Xms4G -Xmx4G -jar server.jar nogui

Następnie pozostaw zapas pamięci. JVM używa pamięci poza przydzieloną stertą na stosy wątków i bufory natywne, a jądro potrzebuje pamięci podręcznej stron (page cache), aby szybko odczytywać pliki świata. Na maszynie z 6 GB RAM sterta o wielkości 4 GB jest rozsądna, a 6 GB nie.

Dwa rodzaje błędów pamięci wyglądają zupełnie inaczej, więc warto znać oba komunikaty. Zbyt mała sterta powoduje błędy wewnątrz środowiska Java, a serwer zazwyczaj kontynuuje pracę w ograniczonym zakresie:

java.lang.OutOfMemoryError: Java heap space

Sterta większa niż fizyczna pamięć maszyny powoduje zabicie procesu z zewnątrz. Konsola wyświetla jedynie Killed, a dowód znajduje się w dzienniku jądra:

sudo dmesg -T | grep -i "out of memory"

Dodanie swapu zapobiega zabiciu procesu, ale nie rozwiązuje problemu. Pętla ticków, która musi odczytywać świat z pamięci swap, przekracza wszystkie limity czasowe, co powoduje, że gracze doświadczają zamrożenia serwera zamiast jego awarii.

Uwaga dotycząca wersji, aktualna na sierpień 2026 roku: Minecraft Java 1.20.5 i nowsze wymagają Java 21. Starsze środowisko uruchomieniowe uruchamia się, a następnie kończy działanie błędem unsupported class file version, który przypomina komunikat kompilatora i często wprowadza w błąd przy pierwszym zetknięciu.

sudo apt install -y openjdk-21-jre-headless
java -version

Czy szybkość dysku ma znaczenie dla serwera gier?

Mniejsze, niż oczekuje się podczas rozgrywki, ale kluczowe w dwóch konkretnych momentach. Świat jest wczytywany do pamięci RAM podczas uruchamiania i zapisywany podczas automatycznego zapisu, więc szybkość dysku wpływa na czas startu oraz na chwilowe zawieszenie podczas zapisu. W międzyczasie większość operacji odczytu jest obsługiwana bezpośrednio z pamięci RAM.

Dwie kwestie sprawiają, że dysk jest ważniejszy, niż sugeruje to podsumowanie. Eksploracja powoduje wczytywanie nowych fragmentów mapy (chunków) lub stref z dysku w trakcie ruchu graczy, a odczyt ten musi zmieścić się w limicie czasu pojedynczego cyklu obliczeniowego (tick). Automatyczny zapis dużego świata generuje duży potok danych, a na wolnym nośniku operacja zapisu blokuje pętlę główną na tyle długo, że pojawia się ostrzeżenie "Can't keep up". W obu przypadkach problemem jest opóźnienie (latency), a nie przepustowość (throughput), dlatego różnica między NVMe a SATA SSD na VPS ma tu większe znaczenie niż deklarowana prędkość w megabajtach na sekundę. Istotne jest to, jak długo trwa pojedyncza, niewielka operacja.

Należy dobrać rozmiar wolumenu z uwzględnieniem wzrostu danych. Świat powiększa się za każdym razem, gdy ktoś odkryje nowy obszar, a kopie zapasowe zwielokrotniają zajętość miejsca. Uruchamiaj du -sh world raz w tygodniu przez miesiąc, aby poznać rzeczywiste tempo przyrostu danych.

Tick rate, ping oraz różnice między nimi

Tick rate określa, ile razy na sekundę serwer przelicza stan świata. Minecraft Java działa z częstotliwością 20. Serwery oparte na silniku Source zazwyczaj pracują z wartością 64. W przypadku Minecrafta nie można zwiększyć tej wartości poprzez zakup lepszego sprzętu, ponieważ jest ona wpisana w projekt gry; celem jest utrzymanie stabilnego poziomu 20, a nie jego przekraczanie.

Ping to czas potrzebny na przesłanie pakietu od gracza do serwera i z powrotem. Te dwa parametry generują odmienne problemy, dlatego należy je rozróżnić przed podjęciem decyzji o inwestycji w sprzęt. Gdy serwer gubi ticki, wszyscy gracze doświadczają tzw. rubber-bandingu w tym samym momencie, a dziennik serwera informuje o tym wprost. Gdy jeden gracz ma długą ścieżkę sieciową, opóźnienia dotyczą tylko jego, podczas gdy reszta grupy działa poprawnie. Wydajniejszy procesor nigdy nie rozwiąże problemu w drugim przypadku.

Opóźnienie zależy od lokalizacji, a nie od wybranego planu

Światło w światłowodzie przebywa około 200 kilometrów na milisekundę. Pełny cykl transmisji (round trip) pokonuje ten dystans dwukrotnie, więc teoretyczne minimum wynosi około 1 ms na każde 100 km między graczem a serwerem. Żaden dostawca nie jest w stanie tego przeskoczyć, a zmiana planu na wyższy nie wpłynie na ten wynik.

ChartRound trip floor by distance, fibre physics only
The data behind this chart
[
  {
    "label": "Toronto to New York",
    "distance_km": 550,
    "rtt_floor_ms": 5.5
  },
  {
    "label": "Dallas to Chicago",
    "distance_km": 1290,
    "rtt_floor_ms": 12.9
  },
  {
    "label": "Dallas to Los Angeles",
    "distance_km": 1990,
    "rtt_floor_ms": 19.9
  },
  {
    "label": "New York to London",
    "distance_km": 5570,
    "rtt_floor_ms": 55.7
  },
  {
    "label": "Los Angeles to Sydney",
    "distance_km": 12070,
    "rtt_floor_ms": 120.7
  }
]

Są to wartości minimalne obliczone na podstawie odległości w linii prostej (great circle distance). Rzeczywiste światłowody nie biegną w linii prostej, a każdy router na trasie dodaje niewielkie opóźnienie, dlatego realny wynik w warunkach produkcyjnych jest zazwyczaj dwukrotnie wyższy od minimum. Gracz z Toronto łączący się z serwerem w Nowym Jorku, oddalonym o 550 km, ma teoretyczne minimum 5.5 ms i zazwyczaj osiąga wartości kilkunastumilisekundowe. Połączenie z Los Angeles do Sydney ma minimum 120.7 ms i żadna dopłata tego nie zmieni.

Dlatego serwer należy umieszczać w pobliżu użytkowników. Jeśli grupa graczy jest rozdzielona oceanem, ktoś zawsze będzie miał dłuższą trasę, a sprawiedliwym rozwiązaniem jest wybór regionu, w którym przebywa większość graczy.

Zamiast zgadywać, należy zmierzyć trasę:

sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10

W pierwszej kolejności należy sprawdzić ostatnią linię. Jest to serwer, a jego utrata pakietów (loss) oraz opóźnienie (latency) decydują o komforcie gry. Utrata pakietów widoczna na pośrednim węźle, przy czystym ostatnim węźle, prawie zawsze wynika z ograniczenia szybkości ICMP (rate limiting) na danym routerze. Routery nadają niższy priorytet odpowiedziom na pakiety diagnostyczne, podczas gdy normalny ruch przekazują bez zakłóceń. Każdy gracz powinien wykonać pomiar w kierunku serwera, ponieważ trasa każdego z nich jest inna.

Jak obliczane jest minimalne opóźnienie (round trip floor)

Światło w szkle porusza się z prędkością około dwóch trzecich prędkości w próżni, co daje w przybliżeniu 200 km na milisekundę. Pełny cykl transmisji pokonuje dystans dwukrotnie, więc minimum w milisekundach to odległość w jedną stronę w kilometrach podzielona przez 100. Odległość z Nowego Jorku do Londynu wynosi 5570 km, a 5570 podzielone przez 100 daje 55.7 ms. Każdy zmierzony wynik będzie wyższy, ponieważ kable biegną wzdłuż linii brzegowych, a routery potrzebują czasu na przetworzenie danych.

Otwieranie wyłącznie portów wymaganych przez grę

Serwer gry wymaga otwarcia jednego lub dwóch portów i żadnych innych. Typowe wartości domyślne:

  • Minecraft Java Edition: TCP 25565
  • Minecraft Bedrock Edition: UDP 19132
  • Valheim: UDP 2456 oraz UDP 2457
  • Palworld: UDP 8211
  • Gry oparte na silniku Source, takie jak Counter-Strike 2: UDP 27015

Sprawdź dokumentację danej gry, ponieważ wiele tytułów korzysta z dodatkowego portu zapytań (query port). Valheim jest tego wyraźnym przykładem: port 2456 obsługuje ruch gry, a 2457 odpowiada na zapytania serwera Steam, dzięki którym serwer pojawia się na liście przeglądarki. Otwarcie tych portów dla protokołu TCP nie przyniesie efektu, ponieważ Valheim komunikuje się wyłącznie przez UDP.

Zezwól na połączenia SSH przed włączeniem firewalla, w przeciwnym razie utracisz dostęp do własnego serwera:

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose

Wielu dostawców oferuje również sieciowy firewall w panelu sterowania, niezależny od tego działającego na maszynie. Port otwarty w ufw, lecz zamknięty w panelu dostawcy, nadal będzie odrzucał połączenia, a objawy z zewnątrz będą identyczne. Sprawdź oba miejsca przed rozpoczęciem edycji plików konfiguracyjnych.

Sprawdzenie portu TCP z innej maszyny jest proste:

sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565

Protokołu UDP nie można przetestować w ten sposób. Zamknięty port UDP zazwyczaj nie wysyła żadnej odpowiedzi, więc brak reakcji na próbę połączenia nie dostarcza żadnych informacji. Zamiast tego zweryfikuj stan po stronie serwera i sprawdź, czy proces gry jest przypisany do oczekiwanego portu:

sudo ss -lunp | grep 2456

Nigdy nie wystawiaj RCON, protokołu zdalnej konsoli, na dostęp z Internetu. Jest to pojedyncze hasło przesyłane otwartym tekstem, domyślnie na porcie 25575. Przypisz go do 127.0.0.1 i łącz się przez tunel SSH. Uruchamiaj serwer gry jako osobny użytkownik bez uprawnień roota, aby błąd w modyfikacji nie pozwolił na przejęcie kontroli nad resztą maszyny. Pierwsze dziesięć minut na nowym VPS zawiera informacje o tworzeniu kont użytkowników i zabezpieczaniu SSH, co w tej sekcji uznaje się za wykonane.

Uruchamianie serwera przez systemd w celu zapewnienia restartu

Serwer uruchomiony ręcznie w sesji SSH kończy działanie po zamknięciu sesji i nie wstaje po restarcie systemu. systemd rozwiązuje oba te problemy. Utwórz plik /etc/systemd/system/minecraft.service:

[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Opcja Restart=on-failure przywraca serwer po awarii i pozostawia go wyłączonym po poprawnym zamknięciu systemu, co jest pożądanym zachowaniem. Opcja Restart=always utrudnia pracę przy celowym zatrzymywaniu serwera. Parametr TimeoutStopSec=180 jest ważniejszy, niż się wydaje. Polecenie systemctl stop wysyła sygnał SIGTERM; standardowy serwer Minecraft przechwytuje ten sygnał, zapisuje świat przed zakończeniem pracy, a po upływie limitu czasu systemd wysyła sygnał SIGKILL. Zapis dużego świata może trwać dłużej niż domyślne 90 sekund, a dane, które nie trafią na dysk przed wysłaniem SIGKILL, zostaną utracone.

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f

Poprawne uruchomienie kończy się linią taką jak Done (12.345s)! For help, type "help". Jeśli jednostka przełącza się między stanami activating i failed, polecenie journalctl -u minecraft -n 50 wskaże przyczynę; zazwyczaj jest to błędna ścieżka w WorkingDirectory lub przydział pamięci heap przekraczający zasoby serwera.

systemd nie zapewnia interaktywnej konsoli, dlatego należy to uwzględnić na etapie planowania. Do wydawania poleceń użyj RCON na localhost lub uruchom serwer wewnątrz sesji tmux – to ten sam nawyk, który pozwala utrzymać długo działającą sesję Claude Code na VPS pomiędzy logowaniami.

Gry dystrybuowane przez Steam wymagają wcześniejszej instalacji SteamCMD. Pakiet w systemie Ubuntu jest binariami 32-bitowymi, dlatego wymagana jest definicja architektury. Pomiń tę linię, a apt zgłosi brak kandydata do instalacji:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd

Niektóre serwery gier zwiększają zużycie pamięci wraz z czasem działania, a zaplanowany restart w godzinach o niskim ruchu jest akceptowalnym obejściem problemu, zamiast jego naprawy. Timer systemd wywołujący systemctl restart jest łatwiejszy w zarządzaniu niż wpis w cron, ponieważ systemctl list-timers pokazuje dokładnie, kiedy nastąpi kolejne wyzwolenie zadania.

Harmonogram tworzenia kopii zapasowych świata

Wszystkie elementy serwera gry można odtworzyć, z wyjątkiem katalogu świata i danych graczy. Ponowna instalacja gry zajmuje minuty. Odbudowa tego, co stworzyła grupa, zajmuje miesiące.

Bezpieczna kopia zapasowa to taka, która powstaje, gdy żaden proces nie zapisuje danych. Zatrzymanie serwera na minutę jest najprostszym sposobem, aby to zagwarantować:

sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

Jeśli nocna przerwa w działaniu jest niedopuszczalna, należy najpierw wymusić zrzut danych świata. W konsoli Minecraft polecenie save-off zatrzymuje automatyczny zapis, save-all flush zapisuje wszystkie oczekujące dane, a save-on włącza automatyczny zapis ponownie po zakończeniu kopiowania. Kopiowanie świata w trakcie zapisu przez serwer może spowodować przechwycenie niekompletnego pliku regionu, co zostanie wykryte dopiero w momencie próby przywrócenia danych.

Przechowuj przynajmniej jedną kopię poza maszyną. Kopia zapasowa na tym samym dysku nie przetrwa awarii nośnika, a snapshot dostawcy jest jedynie udogodnieniem, a nie kopią zapasową, ponieważ znajduje się na tym samym koncie, do którego można utracić dostęp. Zaplanowane kopie zapasowe restic do zdalnej pamięci masowej obsługują retencję i deduplikację, dzięki czemu miesiąc nocnych kopii świata nie zapełni wolumenu.

Następnie wykonaj przywracanie. Kopia zapasowa, która nigdy nie została przywrócona, jest tylko przypuszczeniem. Rozpakuj wczorajsze archiwum do osobnego katalogu, wskaż na nie serwer testowy i potwierdź, że świat się ładuje, a budowle znajdują się w swoich miejscach.

Sprawdź serwer przed podjęciem zobowiązania

Wykup dostęp na miesiąc zamiast na rok i przetestuj rozwiązanie z realnymi graczami przez jeden wieczór. Uruchom test pojedynczego wątku sysbench, a następnie poproś każdego gracza o wykonanie mtr w kierunku serwera. Pełna procedura benchmarku VPS przeprowadza przez te narzędzia i pokazuje, jak wyglądają nieprawidłowe wyniki, a rzeczywisty miesięczny koszt VPS pomaga sprawdzić, czy płacisz za zasób, który faktycznie ogranicza serwer, a nie za ten, który jest najszerzej reklamowany w ofercie.

Dwa poniższe artykuły stanowią kontynuację tego tekstu. Budowa serwera Minecraft na VPS to instrukcja krok po kroku dla powyższych zagadnień, oparta na grze, od której zaczyna większość użytkowników. Szersza lista zastosowań VPS jest warta lektury, jeśli chcesz, aby serwer realizował użyteczne zadania również poza wieczorami z grami.

FAQ

Czy mogę grać w gry na VPS zamiast kupować komputer do gier?

Nie. Standardowy VPS nie posiada GPU, a jedynie wirtualną kartę graficzną dla konsoli dostawcy. Po zainstalowaniu środowiska graficznego glxinfo -B zgłasza renderer programowy llvmpipe, przez co gry 3D działają z prędkością kilku klatek na sekundę. Nawet przy podłączonym GPU, zdalna rozgrywka dodaje kodowanie i dekodowanie wideo do każdego cyklu przesyłu klatki, a protokoły RDP i VNC nie zostały do tego zaprojektowane. VPS służy do hostowania dedykowanego serwera, z którym łączy się grupa graczy. Jeśli celem jest granie, należy wynająć czas GPU lub skorzystać z usług grania w chmurze.

Ilu rdzeni CPU potrzebuje serwer gry?

Dwa szybkie rdzenie sprawdzają się lepiej niż osiem wolnych w przypadku większości gier. Symulacja świata działa na jednym głównym wątku, a dodatkowe rdzenie nie pomogą temu wątkowi w dotrzymaniu limitu 50 ms. Należy porównać wybrane plany za pomocą sysbench cpu --cpu-max-prime=20000 --threads=1 run i sprawdzić wartość zdarzeń na sekundę (events per second). Dodatkowe rdzenie są opłacalne, gdy na tej samej maszynie uruchamiany jest drugi serwer lub baza danych, ponieważ te obciążenia mogą działać bez zabierania czasu wątkowi głównemu (tick thread).

Ile pamięci RAM potrzebuje serwer Minecraft?

Około 2 GB pamięci heap dla czystego świata (vanilla) przy około 10 graczach oraz 8 GB dla dużego modpacka przy tej samej liczbie graczy. Należy ustawić -Xms oraz -Xmx na tę samą wartość i pozostawić od 1 GB do 2 GB pamięci maszyny wolnej dla systemu operacyjnego. JVM wykorzystuje pamięć poza stertą (heap), a jądro systemu potrzebuje pamięci na cache stron. Sterta większa niż dostępna pamięć fizyczna spowoduje zabicie procesu przez jądro, co w dmesg pojawi się jako komunikat o braku pamięci (out of memory), a nie jako błąd Java.

Dlaczego gracze odczuwają lagi, mimo że serwer ma wolne zasoby CPU i RAM?

Istnieją dwie przyczyny pasujące do tego opisu. Należy sprawdzić dziennik serwera pod kątem Can't keep up! Is the server overloaded?, co oznacza, że główny wątek nie zmieścił się w budżecie 50 ms na cykl, podczas gdy pozostałe rdzenie pozostawały bezczynne. Jeśli ten komunikat nie występuje, problemem jest ścieżka sieciowa. Należy poprosić każdego gracza o uruchomienie mtr -rwzc 100 203.0.113.10 względem adresu serwera i sprawdzenie ostatniej linii. Warto również sprawdzić kolumnę st w vmstat 1: czas "steal" powyżej kilku procent oznacza, że host jest przeciążony (oversold), więc bezczynne CPU, które widać, nie jest w rzeczywistości dostępne dla użytkownika.

Jakie porty należy otworzyć dla serwera gry?

Tylko port samej gry oraz SSH. Minecraft Java używa TCP 25565, Minecraft Bedrock używa UDP 19132, Valheim używa UDP 2456 i 2457, a Palworld używa UDP 8211. Regułę SSH należy dodać przed uruchomieniem ufw enable, w przeciwnym razie dostęp do maszyny zostanie utracony. Należy pamiętać, że wielu dostawców stosuje drugą zaporę sieciową w panelu sterowania i port musi być otwarty w obu miejscach. Nigdy nie należy otwierać RCON na porcie 25575 dla Internetu, ponieważ hasło jest przesyłane otwartym tekstem.