server thread hitch warning: timer interval of X milliseconds, solución
¿Ves 'server thread hitch warning: timer interval of X milliseconds'? Qué significa, qué lo causa, cómo encontrar al culpable con el profiler y cuándo ignorarlo.
En la consola del servidor o en txAdmin:
server thread hitch warning: timer interval of 1250 millisecondsEl servidor normalmente hace ticks muchas veces por segundo. Esta línea dice que una brecha entre ticks fue mucho más larga de lo que debería ser, aquí 1250 ms. Esta guía cubre qué significa, las causas habituales, cómo encontrar el script detrás con el profiler, y cuándo puedes ignorarlo.
Qué significa
El servidor ejecuta tus recursos en un hilo principal, y vigila cuánto tarda en volver a pasar por. Cuando algo mantiene ese hilo ocupado, el siguiente tick es tardío, y el servidor imprime esta advertencia con la longitud del retraso.
Los jugadores notan una pausa como lag: acciones que toman un momento en responder, vehículos que saltan hacia atrás, y eventos que llegan tarde. Un número solo dice poco. Mira con qué frecuencia aparece y qué tan grande se vuelve.
Causas comunes
- Un script de servidor pesado. Un bucle que recorre todos los jugadores, todos los vehículos o una tabla grande, ejecutándose una y otra vez, mantiene el hilo ocupado. Un bucle
while true doconWait(0)en el servidor es un ofensor típico. - Trabajo de base de datos lento. Un recurso que pide a la base de datos una gran cantidad de datos, o ejecuta una consulta muy lenta, mantiene el hilo esperando o procesando un resultado grande. Comprueba las advertencias de consulta lenta que oxmysql imprime, y asegúrate de que las columnas que buscas tengan un índice.
- Demasiadas entidades. Miles de vehículos, peds u objetos que un script crea y nunca elimina cargan el servidor, especialmente con OneSync.
- Una máquina lenta. Una CPU ocupada, un VPS que comparte sus núcleos con otros, un disco lento o lleno, o un antivirus escaneando tu carpeta de servidor todo agrega retraso que ningún script es responsable.
- Un número muy grande de eventos. Un script que dispara un evento para cada jugador muchas veces por segundo cuesta tiempo en ambos lados.
- La consola misma. En Windows, hacer clic dentro de la ventana de consola del servidor puede pausar el proceso, ya que la ventana entra en modo de selección de texto. Si tus advertencias de hitch vienen como una brecha larga y luego se detienen, comprueba que no hayas hecho clic en ella. Presiona Enter o Escape en la ventana para liberarla.
Consejo: compara la hora de la advertencia con lo que hiciste. Un hitch cada vez que alguien abre un cierto menú, o al mismo minuto cada hora, apunta al recurso detrás de esa acción o a una tarea programada.
Encuentra al culpable con el profiler
FiveM tiene un profiler incorporado. Lo usas en la consola del servidor (la Live Console en txAdmin, o tu terminal). Comienza a grabar un número de frames mientras el problema está sucediendo:
profiler record 500Cuando la grabación esté hecha, compruébala y ábrela:
profiler status
profiler viewEl visor muestra qué recursos y qué funciones tomaron el tiempo. Busca un recurso cuya barra es mucho más larga que las otras, luego abre sus funciones para ver cuál gasta el tiempo. Comprueba la documentación de FiveM para los comandos y opciones exactos de tu versión de artefacto, ya que el profiler tiene más opciones que se enumeran aquí, como guardar una grabación en un archivo.
Si no atrapas el problema en el acto, graba de nuevo cuando esté sucediendo, o cuando tengas muchos jugadores en línea. Una grabación mientras el servidor está vacío usualmente no muestra nada útil.
Una segunda forma: detén recursos uno por uno
Cuando no quieras leer la salida del profiler, encuentra al culpable por eliminación. En la consola del servidor:
stop my_scriptEspera unos minutos y comprueba si las advertencias se detienen. Reinicia con ensure my_script. Comienza con recursos que hacen bucles mucho (trabajos, HUDs, cualquier cosa con "sync" o "tick" en su nombre) y los más recientes que añadiste.
Arregla la causa
- Bucles pesados: haz que los bucles del servidor esperen más. Casi nada necesita
Wait(0)en el servidor.Wait(1000)o más es a menudo suficiente.
CreateThread(function()
while true do
Wait(5000)
-- check things every 5 seconds, not every tick
end
end)- Base de datos: usa llamadas
awaitsolo donde necesitas el resultado, evita consultas dentro de un bucle y escribe una consulta que devuelva muchas filas en lugar de muchas consultas que devuelven una. Añade un índice a una columna que buscas en una tabla grande. - Entidades: elimina los vehículos y objetos que un script crea cuando ya no los necesita, y establece un límite en cuántos puede crear.
- Hardware: si el servidor tiene varios recursos con pequeños hitches y nada destaca, mira el uso de CPU, espacio en disco, y si otros programas se ejecutan en la misma máquina.
- Actualizar: los artefactos de servidor antiguos reciben correcciones de rendimiento. Mira actualizar artefactos de servidor FiveM.
Cuándo ignorarlo
Las advertencias durante el inicio son esperadas. Mientras el servidor carga docenas de recursos, lee sus archivos y se conecta a la base de datos, el hilo está ocupado por un momento, y un puñado de advertencias de hitch en el primer minuto no significa que algo esté mal.
También ignora un número raro y pequeño (unos pocos cientos de milisegundos) que aparece de vez en cuando, como durante un reinicio de un recurso grande. Actúa cuando aparezcan advertencias mientras hay jugadores en línea, se repitan, o lleguen a segundos.
Lista de comprobación
| Síntoma | Solución |
|---|---|
| Advertencias solo en el primer minuto | Normal: los recursos se están cargando |
| Una advertencia grande, luego nada | Comprueba que no hayas hecho clic en la ventana de consola (Windows) |
| Advertencias repetidas con jugadores en línea | Graba con profiler record 500 y léela con profiler view |
| Un recurso destaca | Arregla sus bucles de servidor, o detenlo y pregunta a su autor |
| Advertencias después de una acción intensiva en consultas | Añade un índice y reduce el número de consultas |
| Muchas entidades | Elimina vehículos y objetos desovados cuando hayas terminado |
| No hay script que destaque | Comprueba CPU, disco y antivirus en la máquina, y actualiza los artefactos |
Respuestas rápidas
¿Qué significa 'server thread hitch warning'?
El hilo principal del servidor no volvió a su trabajo a tiempo. Informa cuántos milisegundos duró la brecha, y durante ese tiempo los jugadores pueden sentir lag o rubber banding.
¿Es la advertencia al iniciar el servidor un problema?
Usualmente no. Mientras muchos recursos se cargan al inicio el servidor está ocupado, y unas pocas advertencias en el primer minuto son normales. Preocúpate por advertencias que aparecen mientras hay jugadores en línea.
¿Qué tamaño de número es un problema?
Unos pocos cientos de milisegundos de vez en cuando es menor. Segundos, o un flujo constante de advertencias, significa que algo está bloqueando el servidor y deberías encontrarlo.
Scripts que evitan este problema
Crypto MiningCompra una nave, monta rigs pieza a pieza y mina monedas en un mercado vivo.Ver script →
CCTV Security CamerasCámaras colocables, una tablet con vista múltiple en vivo y fotos como prueba.Ver script →
Advanced BoostingBoosting de vehículos desde una tablet: contratos de clase D a S+, crews y cola en vivo.Ver script →