Qué revisa el analizador
spark apunta muchas veces por segundo qué estaba haciendo el servidor, y lo sube junto con sus números y sus archivos de configuración. El analizador lo lee todo y repasa cuatro cosas:
- Cómo va el servidor. TPS y MSPT de los últimos minutos, CPU, memoria, jugadores y entidades cargadas, y una barra por minuto para ver cuándo se ralentizó.
- Java y la máquina. El tamaño del heap, el recolector de basura y si usa las flags de Aikar, las recolecciones completas, la memoria que queda tras recolectar, los hilos de CPU y si a la máquina le falta memoria o está ocupada con otras cosas.
- Configuración. view-distance y simulation-distance en server.properties, límites de aparición en bukkit.yml, rangos de activación de entidades en spigot.yml, y las opciones de Paper y Purpur para explosiones, redstone, colisiones, spawners, tolvas, soportes de armadura y aldeanos. Cada recomendación dice qué archivo y qué clave cambiar.
- Plugins. El tiempo de cada plugin en el hilo principal, plugins que suelen dar problemas (ClearLag, PlugMan, los que apilan mobs) y el chunk con más entidades, con un comando /tp para ir hasta él.
Las recomendaciones van ordenadas de lo que hay que arreglar antes a los consejos opcionales. Mientras el servidor va sobrado, los cambios de configuración salen como consejos: liberan un tiempo que todavía no te hace falta.
Cómo hacer un perfil de spark
- Ejecuta
/spark profiler starten la consola o en el juego. En Paper y Purpur 1.21 o posterior, spark ya viene incluido. - Déjalo grabando al menos 5 minutos a una hora normal, con jugadores conectados. Un perfil de un servidor vacío solo muestra un servidor en reposo.
- Ejecuta
/spark profiler stop. spark sube el perfil y escribe un enlacehttps://spark.lucko.me/…. - Pega el enlace arriba. El análisis empieza solo.
Si el lag llega a picos y no todo el rato, graba solo los ticks lentos: /spark profiler start --only-ticks-over 100 se queda con los ticks de más de 100 ms y descarta el resto.
TPS y MSPT
El servidor hace avanzar el mundo en ticks, 20 por segundo, así que cada tick tiene 50 ms. El MSPT (milisegundos por tick) es lo que tardó de verdad cada tick. Mientras se mantiene por debajo de 50, el servidor sostiene 20 TPS y le sobra tiempo. Cuando los ticks tardan más, los TPS bajan, y mobs, redstone y cultivos van más lentos para todos.
| MSPT | Qué significa |
|---|---|
| Menos de 30 ms | Margen de sobra para los momentos de carga |
| 30 – 45 ms | Bien, pero con poco margen |
| 45 – 50 ms | Al límite: cualquier pico se nota |
| Más de 50 ms | El servidor se retrasa y bajan los TPS |
El analizador mira el percentil 95, el tiempo por debajo del que se quedó el 95 % de los ticks. Una media esconde los ticks lentos; el percentil 95, no.
Cómo leer el tiempo por plugin
La lista de plugins suma el tiempo que pasa el hilo principal dentro del código de cada plugin y lo divide entre los ticks grabados, así que se lee en ms por tick, frente a los 50 ms que tiene cada tick. Un plugin que gasta 5 ms por tick se come él solo una décima parte. El tiempo que un plugin pasa llamando a otro cuenta para el llamado, igual que en el visor de spark.
Lo que queda tras los plugins es el propio juego: entidades, chunks, redstone y jugadores. A esa parte apuntan las recomendaciones de configuración. Para ver qué tarea concreta de un plugin se lleva el tiempo, abre el perfil en el visor de spark y cambia a la vista Sources.
Los cambios que más suelen ayudar
- Bajar simulation-distance a 5 o 6, y view-distance a unos 8. La distancia de simulación decide cuánto mundo funciona alrededor de cada jugador, así que pesa en todos los ticks.
- Bajar los rangos de activación de spigot.yml, para que los mobs lejos de los jugadores se procesen menos.
- Usar las opciones de Paper: optimize-explosions, la redstone ALTERNATE_CURRENT, max-entity-collisions a 2 y los spawners a una frecuencia de 2.
- Arrancar Java con las flags de Aikar y un heap acorde al servidor. La calculadora de RAM te escribe las dos cosas.
- Pregenerar el mundo con un plugin como Chunky, para que no se generen chunks nuevos mientras la gente juega.
Cambia una cosa cada vez y graba un perfil nuevo después. Así sabes qué ha ayudado y qué deshacer si una granja deja de funcionar.
Tu perfil y tu privacidad
El analizador funciona en tu navegador: el perfil se descarga directamente de spark.lucko.me y nunca pasa por EndyStudio. Ten en cuenta que un perfil de spark incluye los archivos de configuración del servidor (spark oculta contraseñas, IPs y claves parecidas), y que cualquiera con el enlace puede abrirlo.