server thread hitch warning: timer interval of X Millisekunden, Behebung
Du siehst 'server thread hitch warning: timer interval of X milliseconds'? Was es bedeutet, was es verursacht, wie du den Schuldigen mit dem Profiler findest und wann du es ignorierst.
In der Serverkonsole oder in txAdmin:
server thread hitch warning: timer interval of 1250 millisecondsDer Server macht normalerweise viele Male pro Sekunde eine Tick. Diese Zeile sagt, dass eine Lücke zwischen Ticks viel länger war, als sie sein sollte, hier 1250 ms. Diese Anleitung behandelt, was es bedeutet, die üblichen Ursachen, wie du das Script dahinter mit dem Profiler findest und wann du es ignorierst.
Was es bedeutet
Der Server führt deine Ressourcen auf einem Haupt-Thread aus, und er beobachtet, wie lange es dauert, zurückzukommen. Wenn etwas diesen Thread beschäftigt, ist der nächste Tick verspätet, und der Server gibt diese Warnung mit der Länge der Verzögerung aus.
Spieler bemerken einen Hitch als Lag: Aktionen, die einen Moment brauchen, um zu antworten, Fahrzeuge, die zurückspringen, und Ereignisse, die verspätet ankommen. Eine Zahl allein sagt wenig. Schaue, wie oft sie erscheint und wie groß sie wird.
Häufige Ursachen
- Ein schweres Server-Script. Eine Schleife, die alle Spieler, alle Fahrzeuge oder eine große Tabelle durchläuft, immer wieder ausgeführt, hält den Thread beschäftigt. Eine
while true do-Schleife mitWait(0)auf dem Server ist ein typischer Verursacher. - Langsame Datenbankarbeit. Eine Ressource, die die Datenbank um viele Daten fragt, oder führt eine sehr langsame Abfrage aus, hält den Thread wartend oder verarbeitet ein großes Ergebnis. Überprüfe die langsamen Abfragenwarnungen, die oxmysql ausgibt, und stelle sicher, dass die Spalten, in denen du suchst, einen Index haben.
- Zu viele Entitäten. Tausende von Fahrzeugen, Peds oder Objekten, die ein Script spawnt und nie entfernt, laden den Server, besonders mit OneSync.
- Eine langsame Maschine. Eine ausgelastete CPU, ein VPS, der seine Kerne mit anderen teilt, eine langsame oder volle Disk oder ein Antivirus, der deinen Serverordner scannt, addiert alles Verzögerung, wofür kein Script verantwortlich ist.
- Eine sehr große Zahl von Ereignissen. Ein Script, das für jeden Spieler viele Male pro Sekunde ein Ereignis auslöst, kostet Zeit auf beiden Seiten.
- Die Konsole selbst. Unter Windows kann das Klicken in das Konsolenfenster des Servers den Prozess pausieren, da das Fenster in den Textauswahlmodus eintritt. Wenn deine Hitch-Warnungen als eine lange Lücke kommen und dann stoppen, überprüfe, dass du nicht hineingestikuliert hast. Drücke Enter oder Escape in dem Fenster, um es freizugeben.
Tipp: Vergleiche die Zeit der Warnung mit dem, was du getan hast. Ein Hitch jedes Mal, wenn jemand ein bestimmtes Menü öffnet, oder zur gleichen Minute jede Stunde, weist auf die Ressource dahinter oder auf eine geplante Aufgabe hin.
Finde den Schuldigen mit dem Profiler
FiveM hat einen eingebauten Profiler. Du verwendest ihn in der Serverkonsole (die Live Console in txAdmin oder dein Terminal). Starte die Aufzeichnung einer Anzahl von Frames, während das Problem passiert:
profiler record 500Wenn die Aufzeichnung abgeschlossen ist, überprüfe sie und öffne sie:
profiler status
profiler viewDer Viewer zeigt, welche Ressourcen und welche Funktionen die Zeit nahmen. Suche nach einer Ressource, deren Balken viel länger ist als die anderen, öffne dann ihre Funktionen, um zu sehen, welche die Zeit aufbringt. Überprüfe die FiveM-Dokumentation für die exakten Befehle und Optionen deiner Artifact-Version, da der Profiler mehr Optionen hat als hier aufgelistet, wie das Speichern einer Aufzeichnung in eine Datei.
Wenn du das Problem nicht erfasst, zeichne erneut auf, wenn es passiert, oder wenn du viele Spieler online hast. Eine Aufzeichnung während der Server leer ist, zeigt normalerweise nichts Nützliches.
Ein zweiter Weg: Stoppe Ressourcen einzeln
Wenn du Profiler-Ausgabe nicht lesen möchtest, finde den Schuldigen durch Ausschluss. In der Serverkonsole:
stop my_scriptWarte ein paar Minuten und überprüfe, ob die Warnungen stoppen. Starte es erneut mit ensure my_script. Beginne mit Ressourcen, die viel loopen (Jobs, HUDs, alles mit "sync" oder "tick" im Namen) und die neuesten, die du hinzugefügt hast.
Behebe die Ursache
- Schwere Schleifen: Lass Server-Schleifen länger warten. Fast nichts braucht
Wait(0)auf dem Server.Wait(1000)oder mehr reicht oft aus.
CreateThread(function()
while true do
Wait(5000)
-- check things every 5 seconds, not every tick
end
end)- Datenbank: Verwende
await-Aufrufe nur, wenn du das Ergebnis brauchst, vermeide Abfragen in einer Schleife und schreibe eine Abfrage, die viele Zeilen zurückgibt, statt viele Abfragen, die eine zurückgeben. Füge einen Index zu einer Spalte hinzu, die du in einer großen Tabelle suchst. - Entitäten: Lösche die Fahrzeuge und Objekte, die ein Script spawnt, wenn es sie nicht mehr braucht, und setze ein Limit, wie viele es erstellen kann.
- Hardware: Wenn der Server mehrere Ressourcen mit kleinen Hitches hat und nichts sticht heraus, schaue auf CPU-Nutzung, Festplattenplatz und ob andere Programme auf derselben Maschine ausgeführt werden.
- Update: Alte Server-Artifacts erhalten Performance-Fixes. Siehe Update FiveM Server Artifacts.
Wann man es ignoriert
Warnungen während des Starts sind zu erwarten. Während der Server Dutzende von Ressourcen lädt, ihre Dateien liest und sich mit der Datenbank verbindet, ist der Thread einen Moment beschäftigt, und eine Handvoll Hitch-Warnungen in der ersten Minute bedeutet nicht, dass etwas nicht stimmt.
Ignoriere auch eine seltene, kleine Zahl (ein paar hundert Millisekunden), die hin und wieder erscheint, wie während des Neustarts einer großen Ressource. Handle, wenn Warnungen erscheinen während Spieler online sind, wiederholen oder Sekunden erreichen.
Checkliste
| Symptom | Behebung |
|---|---|
| Warnungen nur in der ersten Minute | Normal: Ressourcen werden geladen |
| Eine große Warnung, dann nichts | Überprüfe, dass du nicht in das Konsolenfenster geklickt hast (Windows) |
| Wiederholte Warnungen mit Spielern online | Zeichne mit profiler record 500 auf und lies mit profiler view |
| Eine Ressource sticht heraus | Behebe ihre Server-Schleifen oder stopple sie und frage ihren Autor |
| Warnungen nach einer abfrage-schweren Aktion | Füge einen Index hinzu und reduziere die Anzahl der Abfragen |
| Viele Entitäten | Lösche gespawnete Fahrzeuge und Objekte, wenn fertig |
| Kein Script sticht heraus | Überprüfe CPU, Disk und Antivirus auf der Maschine und update die Artifacts |
Kurze Antworten
Was bedeutet 'server thread hitch warning'?
Der Haupt-Server-Thread kam nicht rechtzeitig zu seiner Arbeit zurück. Es meldet, wie viele Millisekunden die Lücke andauerte, und während dieser Zeit können Spieler Lag oder Rubber Banding spüren.
Ist die Warnung beim Server-Start ein Problem?
Normalerweise nicht. Während viele Ressourcen beim Start geladen werden, ist der Server beschäftigt, und ein paar Warnungen in der ersten Minute sind normal. Sorge dich um Warnungen, die erscheinen, während Spieler online sind.
Wie groß ist eine Zahl ein Problem?
Ein paar hundert Millisekunden hier und da ist gering. Sekunden oder ein stetiger Strom von Warnungen bedeuten, dass etwas den Server blockiert und du solltest es finden.
Scripts ohne dieses Problem
Crypto MiningKauf eine Lagerhalle, bau Rigs Teil für Teil und mine Coins auf einem Markt, der sich bewegt.Script ansehen →
CCTV Security CamerasPlatzierbare Kameras, ein Live-Tablet mit Multi-View und ausgedruckte Beweisfotos.Script ansehen →
Advanced BoostingFahrzeug-Boosting per Tablet: Aufträge von Klasse D bis S+, Crews und eine Live-Warteschlange.Script ansehen →