Przejdź do treści głównej

Strojenie serwera Rust

Jak poprawić wydajność serwera Rust

Wydajność serwera decyduje o tym, czy gracze nie przegrywają walk przez laga i nie odskakują teleportacyjnie z klifów. Sprowadza się to głównie do trzech rzeczy: taktowania procesora, uruchomionych pluginów i około pięciu convarów.

  • Poradniki Rust
  • Zaktualizowano
  • 9 min czytania
  • Taktowanie procesora
  • Obciążenie od pluginów
  • 5 kluczowych convarów
KLUCZOWE CONVARYserver.cfgbatching.colliders "0" # włącz ponownie powyżej 265k encjinav_disable "true" # zwierzęta i NPC przestają się poruszaćserver.saveinterval "600"ai.think 0fps.max 30 # 30 do 100 to użyteczny zakres

Krótka odpowiedź

Najpierw usuń źle zoptymalizowane pluginy, bo kosztują więcej niż wszystko inne razem wzięte. Potem ustaw batching.colliders "0", ogranicz fps.max do wartości między 30 a 100, podnieś server.saveinterval "600" i rozważ nav_disable "true" oraz ai.think 0, jeśli możesz obejść się bez ruchu zwierząt.

Najważniejsze informacje

  • Rust potrzebuje taktowania, nie liczby rdzeni. Główne funkcje Unity są jednowątkowe.
  • Jeden źle napisany plugin może zniweczyć każdą inną optymalizację z tej strony.
  • FPS serwera to nie FPS gracza. To różne liczby mierzące różne rzeczy.
  • Mierz pluginem Performance Monitor, a potem go usuń. On też kosztuje wydajność.
  • Każdy convar tutaj to kompromis. Wiedz, z czego rezygnujesz, zanim go ustawisz.

Co faktycznie wpływa na wydajność

Stabilna wydajność zapewnia graczy, że mają bezpieczne miejsce do gry, w którym nie przegrają walki przez laga ani nie odskoczą teleportacyjnie z krawędzi klifu. Warto być precyzyjnym co do tego, skąd się ona bierze, bo czas poświęcony na niewłaściwą rzecz jest zmarnowany.

W przybliżeniu w kolejności wpływu:

  1. Pluginy. Jeden źle napisany może zdominować każdy tick serwera.
  2. Taktowanie procesora. Sufit, pod którym działa wszystko inne.
  3. Liczba encji. Pod koniec cyklu wipe'u to właśnie ona zmienia się pod tobą.
  4. Operacje zapisu. Na dużym świecie zauważalne za każdym razem, gdy się wykonują.

Sprzęt: taktowanie ważniejsze niż liczba rdzeni

Zauważysz znacznie lepszą wydajność serwera u dostawców korzystających z szybszych procesorów taktowanych powyżej 3GHz. Powód jest architektoniczny, a nie przypadkowy: główne funkcje Unity są jednowątkowe, więc działają na jednym rdzeniu i nie da się ich rozłożyć na inne. Procesor 32 rdzeniowy taktowany 2.2GHz uruchomi serwer Rust gorzej niż 8 rdzeniowy taktowany 4GHz.

Liczba rdzeni nie jest bez znaczenia. Rzeczy takie jak AI NPC i zwierząt oraz inne obiekty związane z mapą można rozłożyć na wiele rdzeni, dlatego serwery z większą liczbą graczy naprawdę korzystają z dodatkowych rdzeni. Dobry dostawca powinien oferować możliwość większej liczby rdzeni dla większego serwera, a przede wszystkim hostować Rusta na procesorach o wysokiej częstotliwości.

To najbardziej przydatna rzecz do sprawdzenia przed zakupem. Jeśli dostawca reklamuje liczbę rdzeni i RAM, ale nie taktowanie, zwykle jest tak dlatego, że taktowanie nie jest tym, czym warto się chwalić.

Pluginy: największy pojedynczy czynnik

uMod to dodatek moddujący do Rusta, który pozwala serwerom uruchamiać pluginy tworzone głównie przez społeczność. Dobrze napisane, aktywnie utrzymywane pluginy nie wpłyną na wydajność serwera.

Zostanie zrujnowana przez zły. Bez twojej wiedzy niewielki fragment kodu w którymkolwiek z twoich pluginów może poważnie pogorszyć wydajność serwera, a rozmiar czy pozorna prostota pluginu w niczym tego nie zdradzają. Nawet najmniejszy, wyglądający na najlżejszy plugin może wywołać chaos, co potwierdzi każdy doświadczony właściciel serwera Rust albo twórca pluginów.

Unikaj uruchamiania zbyt wielu pluginów. Sama ich liczba ma swój koszt, niezależnie od jakości pojedynczego pluginu, a odpowiedzią na problem częściej jest usunięcie pluginu niż dodanie kolejnego.

Optymalizacja pluginów, które zostawiasz

Niektóre pluginy udostępniają ustawienia strojenia wydajności, takie jak timery i interwały. Zwykle są domyślnie wyłączone albo ustawione zachowawczo. Sprawdź plik konfiguracyjny pluginu i je włącz, bo plugin odpytujący co tick, gdy mógłby odpytywać co trzydzieści sekund, wykonuje trzydzieści razy więcej pracy, niż potrzeba.

Pomiar, zanim cokolwiek zmienisz

Zgadywanie przy problemach z wydajnością marnuje czas. Warto wykonać dwa pomiary.

FPS serwera

To liczba klatek, z jaką działa serwer. Nie ma bezpośredniego wpływu na liczbę klatek u twoich graczy, choć wysoka liczba encji w jednym miejscu wpłynie na oba. Monitoruj ją przez RCON komendą FPS.

Plugin Performance Monitor

Performance Monitor dla uMod raportuje w czasie rzeczywistym informacje o zużyciu pamięci, czasie hooków pluginów i innych pomiarach wpływających na wydajność serwera. Pokaże ci, który plugin zużywa najwięcej czasu na pojedynczym hooku, zamieniając "serwer się źle czuje" w konkretną nazwę.

Nie zostawiaj Performance Monitor uruchomionego bez końca. Samo monitorowanie zużywa zasoby i pogorszy wydajność, którą próbujesz zmierzyć. Zainstaluj go, zbierz odczyty, zadziałaj na ich podstawie, a potem go wyładuj.

Convary, które mają znaczenie

Każdy z nich to kompromis, a nie darmowa wydajność. Zyski są prawdziwe, tak samo jak rzeczy, z których rezygnujesz.

batching.colliders "0"

Usuwa konieczność batchowania encji przez serwer. To duży zysk wydajności: przy włączonym batchowaniu za każdym razem, gdy ktoś buduje, serwer musi rozbić, a potem ponownie zbatchować wszystkie powiązane encje.

Zastrzeżenie: jeśli twój serwer przekroczy 265 000 encji, trzeba będzie włączyć to ponownie, aby obejść limit encji Unity. Pod koniec długiego cyklu wipe'u na ruchliwym serwerze to liczba realna, a nie teoretyczna, więc warto ją obserwować.

nav_disable "true"

Wyłącza siatkę NAV na twoim serwerze. Zysk wydajności jest duży. Kosztem jest to, że zwierzęta i NPC całkowicie przestają się poruszać.

To, czy jest to akceptowalne, zależy od twojego serwera. Na serwerze mocno nastawionym na PvP, gdzie nikt nie poluje na jelenie, jest to niemal darmowe. Na serwerze PvE albo roleplay usuwa to znaczącą część gry.

ai.think 0

Mogłeś zauważyć na dużych serwerach, że zwierzęta nie reagują ani nie walczą. To efekt ustawienia ai.think na 0. Ma to znaczący pozytywny wpływ na wydajność, szczególnie gdy liczba graczy jest wysoka, a gracze często znajdują się blisko zwierząt.

server.saveinterval "600"

Możesz zauważyć spadki FPS po stronie serwera podczas zapisu na serwerze z wysoką liczbą encji. Wydłużenie czasu między zapisami minimalizuje ten efekt.

Kompromisem tutaj jest ryzyko: dłuższy interwał oznacza więcej utraconego postępu, jeśli serwer ulegnie awarii między zapisami. 600 sekund to rozsądny balans, ale jeśli twój serwer jest niestabilny z innych powodów, nie lecz objawu, podnosząc koszt awarii.

fps.max

Kontrolowanie FPS twojego serwera to ogólnie dobry pomysł, aby serwer nie pracował mocniej, niż to konieczne, bez żadnej korzyści dla graczy. Facepunch stwierdziło, że gracze nie zauważą serwera ograniczonego do 30 klatek na sekundę. Zdecydowanie zaleca się ustawienie fps.max na wartość między 30 a 100.

Restarty

Codzienne restarty mogą pomóc wydajności na serwerach moddowanych. Długo działające procesy gromadzą presję na pamięć, a pluginy powoli wyciekające pamięć są na tyle powszechne, że zaplanowany restart to rozsądne zabezpieczenie.

Planuj je na spokojną godzinę i ogłaszaj je. global.restart daje graczom 300 sekundowe ostrzeżenie w odstępach co 5 sekund, co daje wystarczająco czasu na dotarcie w bezpieczne miejsce. Cichy restart w środku najazdu straci ci więcej graczy, niż zyska zysk wydajności.

Co robić, w kolejności

  1. Najpierw zmierz

    Sprawdź FPS serwera przez RCON i uruchom na chwilę Performance Monitor. Bez punktu odniesienia nie stwierdzisz, czy cokolwiek, co zrobiłeś, pomogło.

  2. Usuń najgorszy plugin

    Ten, który wskazał monitor. To niemal zawsze pojedynczy największy dostępny zysk, i jest darmowy.

  3. Dostrój pluginy, które zostawiasz

    Timery i interwały w ich plikach konfiguracyjnych, tam gdzie istnieją.

  4. Zastosuj convary

    Zacznij od batching.colliders "0", fps.max i server.saveinterval, które nic nie kosztują w sposób zauważalny dla graczy. Rozważ nav_disable i ai.think tylko wtedy, gdy możesz zaakceptować nieruchomą dziką faunę.

  5. Zmierz ponownie

    Te same narzędzia, te same warunki, najlepiej przy podobnej liczbie graczy. Potem wyładuj monitor.

  6. Przyjrzyj się sprzętowi

    Jeśli zrobiłeś już wszystko powyższe, a wydajność wciąż jest słaba, sufitem jest procesor i żadna konfiguracja tego nie przeskoczy.

Jeśli jesteś na tym ostatnim etapie, nasz poradnik na co zwrócić uwagę przy kupnie serwera Rust opisuje, o co zapytać dostawcę przed przeprowadzką.

Więcej poradników dla osób prowadzących własny serwer Rust.

Szybkie odpowiedzi

Najczęstsze pytania

W kolejności wpływu: źle napisany plugin zjadający czas hooków, procesor o niskim taktowaniu, bardzo wysoka liczba encji oraz operacje zapisu na dużym świecie. Zwykle winowajcą są pluginy, bo jeden źle napisany może zdominować każdy tick niezależnie od tego, jak dobry jest sprzęt.

Taktowanie ma większe znaczenie niż liczba rdzeni. Główne funkcje Unity są jednowątkowe, więc procesor taktowany powyżej 3GHz robi ogromną różnicę. Dodatkowe rdzenie pomagają przy AI i zadaniach związanych z mapą, dlatego serwery z większą liczbą graczy na nich korzystają, ale procesor z wieloma rdzeniami i niskim taktowaniem to zły wybór dla Rusta.

Gdzieś pomiędzy 30 a 100. Facepunch stwierdziło, że gracze nie zauważą serwera ograniczonego do 30 klatek na sekundę, a pozwolenie serwerowi pracować mocniej, niż to konieczne, niczego graczom nie daje. Ograniczenie tego uwalnia moc dla pracy, która faktycznie wpływa na rozgrywkę.

Tak, znacząco, ale kosztem. Ustawienie nav_disable "true" wyłącza siatkę NAV, co daje duży zysk wydajności i całkowicie zatrzymuje ruch zwierząt i NPC. To, czy ten kompromis jest akceptowalny, zależy wyłącznie od tego, jaki serwer prowadzisz.

Usuwa konieczność batchowania encji przez serwer. To duży zysk wydajności, bo przy włączonym batchowaniu serwer musi rozbić i ponownie zbatchować wszystkie powiązane encje za każdym razem, gdy ktoś buduje. Zastrzeżenie jest realne: powyżej 265 000 encji trzeba włączyć to ponownie, aby obejść limit encji Unity.

Użyj pluginu Performance Monitor dla uMod, który raportuje zużycie pamięci i czasy hooków pluginów oraz pokaże, który plugin zużywa najwięcej czasu na pojedynczym hooku. Nie zostawiaj go uruchomionego na stałe, bo samo monitorowanie kosztuje wydajność.

Hosting Rust na sprzęcie o wysokim taktowaniu

Rust jest jednowątkowy tam, gdzie to się liczy, dlatego uruchamiamy go na procesorach o wysokiej częstotliwości we własnym centrum danych w UK, zamiast na tym, co ma najwięcej rdzeni.

  • Centrum danych w UK
  • Procesory o wysokiej częstotliwości
  • Wsparcie przez zgłoszenia i Discord