spark es el profiler para servidores de Minecraft. Cuando el servidor va a tirones, spark te dice en segundos si la tasa de ticks sufre, qué plugins o granjas consumen el tiempo y si la CPU o la memoria están al límite. Esta guía te muestra los tres comandos que realmente necesitas y cómo leer los números. Las capturas de pantalla proceden de un servidor de pruebas con Paper 1.21.4.

Instalación

spark funciona como plugin en Paper y Spigot, y como mod en Fabric, NeoForge y Forge. En el panel lo encuentras en Plugins → Browser. No necesita configuración. Los comandos pertenecen al grupo de moderación; el nodo correspondiente se llama spark. Cómo asignarlo se explica en LuckPerms: configurar permisos.

Primer vistazo: TPS y duración de los ticks

/spark tps muestra tres líneas:

Salida de /spark tps: TPS, duración de ticks y uso de CPU
Salida de /spark tps: TPS, duración de ticks y uso de CPU
  • TPS (ticks por segundo) durante los últimos 5 segundos, 10 segundos, 1, 5 y 15 minutos. 20,0 es el máximo. A partir de unos 19, los jugadores todavía no notan nada; por debajo de 15 los animales se mueven a trompicones; por debajo de 10 el servidor se vuelve injugable.
  • Duración del tick como mínimo, mediana, percentil 95 y máximo en milisegundos. Un tick puede durar hasta 50 ms para mantener 20 TPS. En la imagen la mediana está en 2,4 ms; el servidor tiene, por tanto, mucho margen. Lo decisivo es el percentil 95: si se acerca a 50 ms, aparecen tirones aunque el promedio se vea bien.
  • Uso de CPU separado por sistema (toda la máquina) y proceso (solo tu servidor). En un servidor alquilado, el valor del proceso es el importante.

/spark healthreport reúne los mismos valores junto con la memoria y el disco en un único informe.

El profiler: ¿quién consume el tiempo?

Cuando los TPS se desploman, inicias el profiler:

/spark profiler start

spark confirma el inicio y sigue funcionando en segundo plano. Déjalo activo al menos un minuto mientras ocurre el problema y luego:

/spark profiler stop
El profiler se ejecuta en segundo plano; spark muestra los comandos para verlo, detenerlo y cancelarlo
El profiler se ejecuta en segundo plano; spark muestra los comandos para verlo, detenerlo y cancelarlo

Al detenerse, spark sube el informe a spark.lucko.me y muestra un enlace. El informe no contiene nombres de jugadores, direcciones IP ni mensajes de chat, sino árboles de llamadas del proceso Java. /spark profiler open lo abre incluso mientras sigue en ejecución, y /spark profiler cancel lo descarta sin subirlo.

En el informe despliegas el árbol desde arriba. Lo que sueles encontrar:

  • Ticks de entidades de un tipo determinado: una granja con cientos de animales u objetos. Reduce la granja o suavízala con entity-activation-range en paper-world-defaults.yml.
  • Un plugin en un event listener: actualiza el plugin, revisa su configuración o sustitúyelo.
  • Carga de chunks por jugadores que vuelan rápido: reduce la distancia de renderizado o pregenera el mundo con Chunky.
  • Relojes de redstone: un circuito que nunca se detiene. Pide al jugador que lo apague.

Recolección de basura y memoria

/spark gc muestra con qué frecuencia y durante cuánto tiempo se detiene la recolección de basura de Java. Muchas pausas largas indican poca RAM o una fuga de memoria en un plugin. /spark heapsummary lista qué tipos de objetos ocupan la memoria. Antes de contratar más RAM merece la pena echar un vistazo aquí: a menudo una actualización de un plugin resuelve el problema.

Errores típicos

  • TPS en 20 y aun así lag. El problema está en el cliente o en la red. /spark ping muestra la latencia por jugador.
  • Olvidaste el enlace del profiler. /spark profiler sin argumentos muestra el estado; tras detenerlo, el enlace también aparece en la consola del servidor.
  • Números sin comparación. Un valor de TPS por sí solo dice poco. Mide una vez con el servidor vacío como referencia.

FAQ

¿A partir de qué valor de TPS notan algo los jugadores?

Hasta unos 19 TPS no se nota nada. Por debajo de 15, los animales y proyectiles se mueven a trompicones; por debajo de 10, el servidor se vuelve injugable. Fíjate menos en el promedio y más en el percentil 95 de la duración del tick: si se acerca a 50 ms, hay tirones aunque el promedio de TPS se vea bien.

¿Contiene un informe de spark datos personales de mis jugadores?

No. El informe consiste en árboles de llamadas del proceso Java y no contiene nombres de jugadores, direcciones IP ni mensajes de chat. Si aun así no quieres subir nada, descarta la ejecución con /spark profiler cancel o léelo directamente en el juego con /spark profiler open.

¿Cuánto tiempo debe ejecutarse el profiler?

Al menos un minuto, y precisamente mientras el problema realmente ocurre. Una ejecución en un servidor tranquilo solo muestra que todo está en orden. Con tirones esporádicos, déjalo ejecutándose más tiempo y detenlo justo después de un fallo.

¿Sirve más RAM contra el lag?

Solo si la recolección de basura es la causa. /spark gc muestra la frecuencia y duración de las pausas de Java, y /spark heapsummary los tipos de objetos que ocupan la memoria. A menudo hay un único plugin detrás, y una actualización resuelve el problema de forma más económica que más RAM.

Los TPS están en 20 y aun así hay tirones: ¿qué hacer?

Entonces no es el tick del servidor, sino el cliente o la red. /spark ping muestra la latencia por jugador. Si afecta solo a algunos jugadores, su conexión es la causa; si afecta a todos, revisa la distancia de renderizado y la tasa de fotogramas en el cliente.

Guías relacionadas

Pregenerar un mundo con antelación le ahorra al servidor la carga de chunks: Chunky: pregenerar el mundo. Cómo el panel avisa de TPS bajos de forma persistente lo describe Lag en el servidor de Minecraft: TPS y Watchdog.

Fuentes