Performance tuning
Lagující FiveM server je téměř vždy vina jednoho nebo dvou špatně napsaných resources, ne slabého hardwaru. Tento článek ukazuje, jak viníka najít.
Jak měřit
Rozlišuj server tick a client FPS. Server tick měříš v konzoli, klientský
výkon příkazem resmon ve hře.
Zapni resmon ve hře
Otevři klientskou konzoli klávesou F8 a napiš:
resmon 1Přečti sloupec CPU time
Ukazuje, kolik milisekund resource spotřebuje na jeden snímek.
Najdi hříšníky
Cokoli nad 0.5 ms v klidovém stavu je podezřelé.
Referenční hodnoty
| CPU time | Hodnocení |
|---|---|
| do 0.05 ms | výborné |
| 0.05 – 0.20 ms | v pořádku |
| 0.20 – 0.50 ms | ke kontrole |
| nad 0.50 ms | problém |
Nejčastější příčina lagů je smyčka while true do ... Wait(0) end, která běží
každý snímek i tehdy, když hráč nic nedělá. Zvyš Wait nebo smyčku ukonči.
Typická optimalizace skriptu
Špatně — běží 60× za sekundu pořád:
CreateThread(function()
while true do
Wait(0)
local ped = PlayerPedId()
if IsPedInAnyVehicle(ped, false) then
-- neco delej
end
end
end)Lépe — v klidu spí, zrychlí jen když je potřeba:
CreateThread(function()
while true do
local wait = 500
local ped = PlayerPedId()
if IsPedInAnyVehicle(ped, false) then
wait = 0
-- neco delej
end
Wait(wait)
end
end)Nastavení serveru
# OneSync - nutny pro vic nez 32 hracu
set onesync on
set onesync_population true
# Snizeni zateze pri velkem poctu entit
set onesync_distanceCullVehicles true
set onesync_forceMigration true
sv_maxclients 64onesync_distanceCullVehicles výrazně sníží síťovou zátěž na velkých mapách —
klienti nedostávají data o vozidlech, která nevidí.
Databázové dotazy
Pomalá databáze zpomalí celý server, protože dotazy blokují Lua vlákno.
- Používej indexy na sloupci
identifier. - Nedotazuj se v smyčce každý snímek.
- Ukládej hráče dávkově, ne po každé změně.
CREATE INDEX idx_users_identifier ON users (identifier);Nikdy nevolej MySQL.query uvnitř while true do Wait(0) smyčky. Zahltíš
databázi a server přestane reagovat.
Stream a paměť klienta
Velké mapy zvyšují spotřebu paměti klienta. Pokud hráčům padá hra:
- Zmenši textury (
.ytd) na rozumné rozlišení. - Odeber nepoužívané mapy.
- Zkontroluj, že nemáš dvě mapy na stejném místě.
Checklist při lagách
Zkontroluj resmon
Najdi resource nad 0.5 ms.
Zastav podezřelý resource
stop podezrely-resourceZlepšilo se to? Máš viníka.
Zkontroluj databázi
Pomalé dotazy poznáš podle prodlevy při přihlášení hráče.
Zkontroluj uptime
Server běží týden bez restartu? Restartuj — viz Scheduled restart.
Tipy
- Neinstaluj skripty „na zkoušku” na produkci. Jeden špatný skript položí celý server.
- Měř před i po. Bez čísel jen hádáš.
Poznámka
Náš hardware používá CPU s vysokým taktem právě kvůli FiveM, který je citlivý na výkon jednoho jádra. Upgrade tarifu ti přidá RAM, ne rychlejší jádro.