FiveM „server thread hitch warning“: was es bedeutet und wie Sie es beheben
Eine Warnung wie „server thread hitch warning: timer interval of 250 milliseconds“ bedeutet, dass die Hauptschleife des Servers so lange hängen geblieben ist. Spieler spüren das als Rubber-Banding, verzögerte Aktionen und Desync. So finden Sie die Ursache, statt zu raten.
Was die Warnung bedeutet
FXServer führt den Großteil der Spiellogik, einschließlich jedes Serverskripts, auf einem einzigen Hauptthread aus. Jeder Durchlauf dieser Schleife sollte wenige Millisekunden dauern. Dauert einer viel länger, gibt die Konsole eine Hitch-Warnung mit der Länge des Hängers aus. Ähnliche Warnungen können den Netzwerk- oder Sync-Thread nennen.
- Ein paar Hitches beim Serverstart sind normal: Ressourcen werden geladen und die Datenbank kommt in Gang.
- Hitches, die sich während des Spiels wiederholen, bedeuten, dass etwas nicht stimmt, und Spieler werden es merken.
1. Finden Sie die Ressource mit dem Profiler
FXServer hat einen eingebauten Profiler. Starten Sie ihn in der Serverkonsole (der Live Console von txAdmin), nicht in der F8-Konsole, während die Hitches auftreten:
profiler record 500 profiler status profiler saveJSON hitch.json
profiler record 500 zeichnet die nächsten 500 Frames auf. Wenn profiler status zeigt, dass die Aufnahme fertig ist, speichern Sie sie, öffnen die Entwicklertools von Chrome, gehen auf den Tab Performance und laden die Datei. Hitches erscheinen als hohe Spitzen; zoomen Sie in eine hinein, um zu sehen, welche Ressource die Zeit gebraucht hat, bis hin zu Datei und Zeile.
2. Beheben Sie die üblichen Ursachen in Skripten
- Schleifen, die jeden Tick laufen. Eine Serverschleife mit
Wait(0)läuft so oft sie kann. Die meisten Serverschleifen können zwischen zwei Durchläufen Hunderte oder Tausende Millisekunden warten. - Arbeit an allen Spielern oder Entitäten auf einmal. Jede Sekunde über alle Spieler oder Fahrzeuge zu laufen, wird teuer, wenn die Stadt wächst. Verteilen Sie die Arbeit oder reagieren Sie auf Events, statt ständig zu prüfen.
- Langsame Datenbankabfragen. Eine Abfrage, die eine große Tabelle ohne Index durchsucht, kann Hunderte Millisekunden dauern. oxmysql meldet langsame Abfragen in der Konsole; legen Sie Indizes für die durchsuchten Spalten an und führen Sie keine Abfragen in engen Schleifen aus.
- Event-Spam. Clients, die Server-Events viele Male pro Sekunde auslösen, aus Versehen oder durch Cheats, halten den Hauptthread beschäftigt. Begrenzen Sie die Rate teurer Events.
- Alte Ressourcen. Entfernen Sie Skripte, die Sie nicht mehr nutzen, und aktualisieren Sie die übrigen.
3. Prüfen Sie den Datenbankserver
Roleplay-Server schreiben ständig in die Datenbank. Betreiben Sie MariaDB auf derselben Maschine oder sehr nah daran, auf NVMe-Speicher und mit genug Arbeitsspeicher. Räumen Sie Log-Tabellen auf, die unbegrenzt wachsen, und sichern Sie die Datenbank regelmäßig.
4. Prüfen Sie den Host
- CPU-Geschwindigkeit. Der Hauptthread nutzt einen Kern, daher entscheidet die Single-Thread-Leistung, wie viel Skriptarbeit in jeden Frame passt. Ein langsamer oder überlasteter Host-Kern macht aus kleinen Skriptkosten Hitches.
- Virenschutz auf Windows-Servern. Echtzeitscans eines großen Serverordners können viel CPU kosten. Auf von uns betreuten Windows-Servern hat Microsoft Defender mehr CPU verbraucht als FXServer selbst. Schließen Sie den Serverordner,
FXServer.exeund das Datenbankprogramm vom Scan aus und lassen Sie den Echtzeitschutz für alles andere an. - Andere Programme auf derselben Maschine. Bots, Webpanels und Backups, die zur Hauptzeit laufen, konkurrieren um dieselbe CPU.
Lag nur bei einigen Spielern?
Client-Lag ist etwas anderes als ein Server-Hitch. Ruckeln nur einige Spieler, bitten Sie sie, die F8-Konsole zu öffnen und resmon 1 auszuführen, um zu sehen, welche Ressourcen auf ihrer Seite am meisten Zeit brauchen.
Damit es nicht wiederkommt
- Profilieren Sie nach jedem großen neuen Skript, nicht erst Wochen später.
- Beobachten Sie die CPU-Grafik Ihres Servers zur Hauptzeit.
- Testen Sie Updates zuerst auf einer Kopie des Servers.
Skriptfehler in der Konsole wie „attempt to index a nil value“ sind ein anderes Problem. Lesen Sie wie Sie diesen Fehler in ESX- und QBCore-Skripten beheben.
Hosten Sie Ihren FiveM-Server in Singapur
Niedriger Ping für Spieler in Indien, Malaysia und Indonesien, auf AMD EPYC mit NVMe und Gcore-DDoS-Schutz auf jeder IP.
