server thread hitch warning: timer interval di X millisecondi, correzione
Vedi 'server thread hitch warning: timer interval di X millisecondi'? Cosa significa, cosa lo causa, come trovare il colpevole con il profiler e quando ignorarlo.
Nella console del server o in txAdmin:
server thread hitch warning: timer interval of 1250 millisecondsIl server normalmente fa tick molte volte al secondo. Questa riga dice che uno spazio tra i tick era molto più lungo di quanto dovrebbe essere, qui 1250 ms. Questa guida copre cosa significa, le cause comuni, come trovare lo script dietro di esso con il profiler, e quando puoi ignorarlo.
Cosa significa
Il server esegue le tue risorse su un thread principale, e osserva quanto tempo ci vuole per tornare in giro. Quando qualcosa mantiene quel thread occupato, il prossimo tick è in ritardo, e il server stampa questo avvertimento con la lunghezza del ritardo.
I giocatori notano un hitch come lag: azioni che impiegano un momento per rispondere, veicoli che saltano indietro, e eventi che arrivano in ritardo. Un numero solo dice poco. Guarda quanto spesso appare e quanto grande diventa.
Cause comuni
- Uno script server pesante. Un ciclo che passa attraverso tutti i giocatori, tutti i veicoli o una tabella grande, eseguito ancora e ancora, mantiene il thread occupato. Un ciclo
while true doconWait(0)sul server è un trasgressore tipico. - Lavoro database lento. Una risorsa che chiede al database molti dati, o esegue una query molto lenta, mantiene il thread in attesa o in elaborazione di un risultato grande. Controlla gli avvertimenti di query lenta che oxmysql stampa, e assicurati che le colonne che cerchi abbiano un indice.
- Troppe entità. Migliaia di veicoli, ped o oggetti che uno script crea e non rimuove mai caricano il server, specialmente con OneSync.
- Una macchina lenta. Una CPU occupata, un VPS che condivide i suoi core con altri, un disco lento o pieno, o un antivirus che scansiona la cartella del tuo server aggiunge ritardo di cui nessuno script è responsabile.
- Un numero molto grande di eventi. Uno script che attiva un evento per ogni giocatore molte volte al secondo costa tempo su entrambi i lati.
- La console stessa. Su Windows, fare clic dentro la finestra della console del server può mettere in pausa il processo, poiché la finestra entra in modalità selezione testo. Se i tuoi avvisi di hitch vengono come uno spazio lungo e poi si fermano, controlla che non hai fatto clic dentro di esso. Premi Invio o Escape nella finestra per rilasciarlo.
Suggerimento: confronta l'ora dell'avviso con quello che hai fatto. Un hitch ogni volta che qualcuno apre un certo menu, o allo stesso minuto ogni ora, indica la risorsa dietro quell'azione o un compito pianificato.
Trova il colpevole con il profiler
FiveM ha un profiler integrato. Lo usi nella console del server (la Console Live in txAdmin, o il tuo terminale). Inizia a registrare un numero di frame mentre il problema sta accadendo:
profiler record 500Quando la registrazione è fatta, controlla e aprila:
profiler status
profiler viewIl visualizzatore mostra quali risorse e quali funzioni hanno preso il tempo. Cerca una risorsa la cui barra è molto più lunga delle altre, quindi apri le sue funzioni per vedere quale spende il tempo. Controlla la documentazione FiveM per i comandi esatti e le opzioni della tua versione di artefatto, poiché il profiler ha più opzioni di quelle elencate qui, come il salvataggio di una registrazione in un file.
Se non catturi il problema in atto, registra di nuovo quando sta accadendo, o quando hai molti giocatori online. Una registrazione mentre il server è vuoto di solito non mostra nulla di utile.
Un secondo modo: ferma le risorse una per una
Quando non vuoi leggere l'output del profiler, trova il colpevole per eliminazione. Nella console del server:
stop my_scriptAttendi qualche minuto e controlla se gli avvisi si fermano. Riavvialo con ensure my_script. Inizia con le risorse che si ripetono molto (lavori, HUD, qualsiasi cosa con "sync" o "tick" nel nome) e le più recenti che hai aggiunto.
Correggi la causa
- Cicli pesanti: fai aspettare i cicli server più a lungo. Quasi nulla ha bisogno di
Wait(0)sul server.Wait(1000)o più è spesso sufficiente.
CreateThread(function()
while true do
Wait(5000)
-- check things every 5 seconds, not every tick
end
end)- Database: usa le chiamate
awaitsolo dove hai bisogno del risultato, evita le query dentro un ciclo e scrivi una query che restituisce molte righe invece di molte query che ne restituiscono una. Aggiungi un indice a una colonna che cerchi in una tabella grande. - Entità: elimina i veicoli e gli oggetti che uno script crea quando non ne ha più bisogno, e imposta un limite su quanti ne può creare.
- Hardware: se il server ha diverse risorse con piccoli hitch e nulla spicca, guarda l'uso della CPU, lo spazio su disco, e se altri programmi vengono eseguiti sulla stessa macchina.
- Aggiornamento: i vecchi artefatti del server ricevono correzioni di prestazioni. Vedi aggiorna gli artefatti del server FiveM.
Quando ignorarlo
Gli avvisi durante l'avvio sono previsti. Mentre il server carica dozzine di risorse, legge i loro file e si connette al database, il thread è occupato per un momento, e una manciata di avvisi di hitch nel primo minuto non significa che qualcosa sia sbagliato.
Ignora anche un numero raro e piccolo (pochi centesimi di millisecondo) che appare di tanto in tanto, come durante un riavvio di una risorsa grande. Agisci quando gli avvisi appaiono mentre i giocatori sono online, si ripetono, o raggiungono i secondi.
Checklist
| Sintomo | Soluzione |
|---|---|
| Avvisi solo nel primo minuto | Normale: le risorse si stanno caricando |
| Un grande avviso, poi nulla | Controlla di non aver fatto clic nella finestra della console (Windows) |
| Avvisi ripetuti con giocatori online | Registra con profiler record 500 e leggilo con profiler view |
| Una risorsa spicca | Correggi i suoi cicli server, o fermalo e chiedi al suo autore |
| Avvisi dopo un'azione con molte query | Aggiungi un indice e riduci il numero di query |
| Molte entità | Elimina i veicoli e gli oggetti creati quando finito |
| Nessuno script spicca | Controlla CPU, disco e antivirus sulla macchina, e aggiorna gli artefatti |
Risposte rapide
Cosa significa 'server thread hitch warning'?
Il thread principale del server non è tornato al lavoro in tempo. Segnala quanti millisecondi è durato il divario, e durante quel tempo i giocatori possono sentire lag o rubber banding.
L'avvertimento all'avvio del server è un problema?
Di solito no. Mentre molte risorse si caricano all'inizio il server è occupato, e pochi avvisi nel primo minuto sono normali. Preoccupati degli avvisi che appaiono mentre i giocatori sono online.
Un grande numero è un problema?
Pochi centesimi di millisecondo di tanto in tanto è minore. Secondi, o un flusso costante di avvisi, significa che qualcosa sta bloccando il server e dovresti trovarlo.
Script senza questo problema
Crypto MiningCompra un magazzino, costruisci rig pezzo per pezzo e mina monete su un mercato che si muove.Vedi script →
CCTV Security CamerasTelecamere posizionabili, un tablet multi-vista in diretta e foto stampate come prove.Vedi script →
Advanced BoostingBoosting di veicoli dal tablet: contratti dalla classe D alla S+, crew e coda in tempo reale.Vedi script →