FiveM „server thread hitch warning”: wat het betekent en hoe je het oplost
Een waarschuwing als „server thread hitch warning: timer interval of 250 milliseconds” betekent dat de hoofdlus van de server zo lang vastzat. Spelers merken het als rubber-banding, vertraagde acties en desync. Zo vind je de oorzaak in plaats van te gokken.
Wat de waarschuwing betekent
FXServer voert de meeste gamelogica, inclusief elk serverscript, uit op één hoofdthread. Elke doorgang van die lus zou een paar milliseconden moeten duren. Duurt er een veel langer, dan toont de console een hitch-waarschuwing met de duur van de hapering. Vergelijkbare waarschuwingen kunnen de netwerk- of syncthread noemen.
- Een paar hitches bij het starten van de server zijn normaal: resources laden en de database komt op gang.
- Hitches die zich tijdens het spelen blijven herhalen betekenen dat er iets mis is, en spelers gaan het merken.
1. Vind de resource met de profiler
FXServer heeft een ingebouwde profiler. Start hem in de serverconsole (de Live Console van txAdmin), niet in de F8-console, terwijl de hitches optreden:
profiler record 500 profiler status profiler saveJSON hitch.json
profiler record 500 legt de volgende 500 frames vast. Als profiler status laat zien dat de opname klaar is, sla je hem op, open je de ontwikkelaarstools van Chrome, ga je naar het tabblad Performance en laad je het bestand. Hitches verschijnen als hoge pieken; zoom in op een piek om te zien welke resource de tijd kostte, tot op het bestand en de regel.
2. Los de gebruikelijke oorzaken in scripts op
- Lussen die elke tick draaien. Een serverlus met
Wait(0)draait zo vaak als hij kan. De meeste serverlussen kunnen honderden of duizenden milliseconden wachten tussen twee doorgangen. - Werk aan alle spelers of entiteiten tegelijk. Elke seconde alle spelers of voertuigen doorlopen wordt duur naarmate de stad groeit. Spreid het werk, of reageer op events in plaats van voortdurend te controleren.
- Trage databasequery's. Een query die een grote tabel zonder index doorzoekt, kan honderden milliseconden duren. oxmysql meldt trage query's in de console; voeg indexen toe voor de kolommen waarop ze zoeken, en voer geen query's uit in krappe lussen.
- Eventspam. Clients die serverevents vele keren per seconde aanroepen, per ongeluk of door valsspelen, houden de hoofdthread bezig. Beperk de frequentie van zware events.
- Oude resources. Verwijder scripts die je niet meer gebruikt, en werk de rest bij.
3. Controleer de databaseserver
Roleplay-servers schrijven voortdurend naar de database. Houd MariaDB op dezelfde machine of er heel dicht bij, op NVMe-opslag, met genoeg geheugen. Ruim logtabellen op die zonder grens groeien, en maak regelmatig een back-up van de database.
4. Controleer de host
- CPU-snelheid. De hoofdthread gebruikt één kern, dus de single-threadsnelheid bepaalt hoeveel scriptwerk in elk frame past. Een trage of overbelaste kern bij de host maakt van kleine scriptkosten hitches.
- Antivirus op Windows-servers. Realtime scannen van een grote servermap kan veel CPU kosten. Op Windows-servers die wij ondersteunen, gebruikte Microsoft Defender meer CPU dan FXServer zelf. Sluit de servermap,
FXServer.exeen het databaseprogramma uit van het scannen, en houd realtime bescherming aan voor al het andere. - Andere programma's op dezelfde machine. Bots, webpanelen en back-ups die tijdens piekuren draaien, concurreren om dezelfde CPU.
Lag alleen bij sommige spelers?
Clientlag is iets anders dan een serverhitch. Haperen alleen sommige spelers, vraag ze dan de F8-console te openen en resmon 1 uit te voeren om te zien welke resources aan hun kant de meeste tijd kosten.
Voorkom dat het terugkomt
- Profileer na het toevoegen van elk groot script, niet weken later.
- Houd de CPU-grafiek van je server in de gaten tijdens piekuren.
- Test updates eerst op een kopie van de server.
Scriptfouten in de console, zoals „attempt to index a nil value”, zijn een ander probleem. Lees hoe je die fout in ESX- en QBCore-scripts oplost.
Host je FiveM-server in Singapore
Lage ping voor spelers in India, Maleisië en Indonesië, op AMD EPYC met NVMe en Gcore DDoS-bescherming op elk IP.
