Jak zoptymalizować wydajność serwera FiveM

Jak zoptymalizować wydajność serwera FiveM

Zacznij od zmierzenia problemu. Niski FPS klienta, długi czas zasobu, zacięcia serwera, oczekiwanie na bazę danych i utrata sieci to różne problemy. Zapisz powtarzalną podstawę przy reprezentatywnej liczbie graczy, zanim usuniesz zasoby lub skopiujesz convary z innego serwera.

Metoda: przejrzano 9 sierpnia 2026 r. w odniesieniu do oficjalnego Cfx.re przewodnik po profilowaniu, polecenia konsoli klienta I komendy serwerowe.

1. Zdefiniuj objaw i podstawę

  • FPS jednego gracza spada: odtwórz na tym kliencie i sprawdź monitor zasobów klienta.
  • Wszyscy gracze się zacinają: rejestruj ostrzeżenia o zacięciach serwera, czas zasobów, opóźnienia bazy danych i nasycenie procesora hosta.
  • Dołączanie jest powolne: sprawdź rozmiar strumieniowanych zasobów, zachowanie pobierania i pracę inicjalizacji.
  • Akcje się zacinają: śledź zdarzenie i zapytanie do bazy danych, zamiast obwiniać grafikę.

Zapisz wersję artefaktu, liczbę graczy, aktywne zasoby, trasę testową i znaczniki czasu. Zmieniaj jedną zmienną naraz.

2. Poprawnie używaj resmon i profilera

Otwórz F8 i użyj resmon 1 do szybkiego porównania po stronie klienta. Traktuj to jako wskazówkę, a nie wyrok: czas zależy od tego, co robi gracz. Powtórz tę samą interakcję kilka razy. Aby uzyskać dowody na poziomie kodu, wykonaj przechwycenie profilera podczas powolnej akcji i sprawdź kosztowny zakres lub zdarzenie.

Zachowaj szczegółowy FiveM przewodnik po resmon otwarte podczas testowania.

3. Napraw kod zasobu w wąskim gardle

  • Zastąp bezwarunkowe pętle klatka po klatce pracą sterowaną zdarzeniami lub uzasadnionym interwałem oczekiwania.
  • Waliduj zdarzenia sieciowe na serwerze i wysyłaj tylko dane, których potrzebuje klient.
  • Unikaj wysyłania dużych ładunków, gdy wystarczające jest zdarzenie ukierunkowane.
  • Buforuj stabilne wyszukiwania, ale unieważniaj bufor, gdy stan bazowy się zmieni.
  • Profiluj przed i po; krótszy kod nie jest automatycznie szybszym kodem.

4. Sprawdź pracę bazy danych

Loguj wolne zapytania z parametrami i miejscami wywołania. Dodawaj indeksy dopiero po potwierdzeniu wzorca zapytania i unikaj powtarzania zapytań w pętlach. Grupuj zapisy, gdy poprawność na to pozwala. Testuj ponowne połączenia, zaplanowane zapisy i akcje szczytowe gospodarki, ponieważ pusta baza danych przejściowa może ukrywać opóźnienia produkcyjne.

5. Budżetuj strumieniowane zasoby

Audytuj nadmiernie duże tekstury, zduplikowane modele i pakiety zasobów, które strumieniują znacznie więcej niż serwer wykorzystuje. Przetestuj czyste dołączenie i ruchliwą lokalizację. Zweryfikuj poziomy szczegółowości, rozdzielczość tekstur i integralność plików przed kompresją lub usunięciem zasobów. Uszkodzone przesłanie może wyglądać jak problem z wydajnością.

6. Oddziel limity hosta od limitów skryptów

Monitoruj nasycenie CPU na rdzeń, obciążenie pamięci, opóźnienie przechowywania danych, utratę pakietów i lokalizację bazy danych. FiveM obciążenia mogą stanowić wąskie gardło dla jednego aktywnego rdzenia, podczas gdy całkowite użycie CPU nadal wygląda na niskie. Porównaj hosty z tym samym buildem i obciążeniem; sama pamięć RAM i reklamowane sloty nie dowodzą wydajności.

7. Wdróż i monitoruj

  1. Wykonaj kopię zapasową zasobu, konfiguracji i dotkniętych tabel bazy danych.
  2. Wdróż jedno zmierzone poprawkę na środowisko testowe.
  3. Powtórz scenariusz bazowy i porównaj te same metryki.
  4. Wdróż podczas kontrolowanego okna i obserwuj zacięcia, błędy i zgłoszenia graczy.
  5. Natychmiast wycofaj się, jeśli docelowa metryka lub przepływ rozgrywki ulegnie pogorszeniu.

Optymalizacja jest zakończona tylko wtedy, gdy zmierzony objaw ulegnie poprawie bez przenoszenia awarii gdzie indziej.

Dodaj komentarz