Solucionando problemas de lag
En este artículo aprenderemos cómo optimizar al máximo tu servidor de Minecraft. Ten en cuenta que esto no es un conjunto mágico de instrucciones que eliminará todo el lag de tu servidor, pero te ayudará.
Este artículo es un poco diferente de los demás, ya que se actualizará muy frecuentemente para hacerlo lo mejor posible.
Paper y cualquiera de sus bifurcaciones
Pocketmine
Nukkit
Vanilla Bedrock
Vanilla Java
Spigot o sus bifurcaciones anteriores
Otros
* Si estás utilizando Spigot o alguna bifurcación anterior, realmente no deberías hacerlo y deberías usar bifurcaciones más optimizadas, como Paper o Purpur (recomendamos Purpur).
TPS son los ticks por segundo. Hay 20 ticks de Minecraft en un segundo en la vida real, por lo tanto, si tu servidor no tiene lag, debería estar funcionando a 20TPS.
MSPT es cuánto tiempo lleva cada tick. Cuanto menor sea este número, mejor.
Ping (ms). El 99.9% del tiempo, esto no está relacionado con el rendimiento de tu servidor, sino con el retraso de ubicación entre tu cliente y el servidor.
La primera sección requerirá editar los archivos de configuración de tu servidor que se encuentran en la carpeta raíz del servidor.
Para acceder a estos archivos si no sabes cómo hacerlo, sigue esta mini guía:
Ve al panel, en witherpanel.com.
Selecciona el servidor de la lista.
Navega hasta el Administrador de Archivos en el lado del panel. Accede a la carpeta config.
Aquí puedes ver la lista de archivos del servidor que incluye los archivos de configuración que queremos.
Hay una lista de configuraciones que se recomienda cambiar para obtener el servidor más optimizado.
Podríamos enumerarlos todos aquí, pero hay una lista perfectamente buena que las personas han hecho a lo largo de los años, que recomendamos que cambies las configuraciones para que coincidan.
La guía que combina muchos otros guías más pequeñas está aquí: https://github.com/YouHaveTrouble/minecraft-optimization y aquí https://www.spigotmc.org/threads/guide-server-optimization%E2%9A%A1.283181/
Te recomendamos que revises ambos y apliques los cambios a tu servidor.
Si tu servidor requiere funcionar lo más cerca posible del comportamiento vanilla (mientras usas bifurcaciones de Spigot), algunas de las configuraciones que modifican características principales del juego, como el comportamiento de los contenedores y la generación de mobs, es posible que no desees cambiarlas. Dicho esto, es tu servidor, ¡así que haz lo que quieras!
Has seguido esas 2 guías, cambiando muchas configuraciones en tu servidor, pero todavía tiene un bajo TPS...
Te mostraremos cómo depurar qué está causando el lag en tu servidor.
Esto es para Paper y bifurcaciones superiores, ya que Spigot no tiene esta funcionalidad actualizada (Spigot solo tiene Timings v1, mientras que Paper/bifurcaciones tienen Timings v2, que es lo que necesitamos).
En tu servidor, ejecuta el comando timings on.
Deja tu servidor funcionando durante unos 30 minutos, ya que los timings recopilan datos para el informe.
Después de 30 minutos, ejecuta el comando timings paste y ve al enlace que aparece en la consola.
Aquí es donde comienza la diversión, mirando los timings para ver qué está causando el lag.
Para empezar más fácilmente, vamos a echar un vistazo a la pestaña PLUGINS, para ver si alguno de tus plugins está causando lag.
Este es un ejemplo de informe de timings, en la mencionada pestaña:
Puedes ver en la imagen que el plugin "InventoryRollback" está ocupando más del promedio del tick.
Haciendo clic en InventoryRollback::Combined Total, obtendrás una lista más detallada de eventos que el plugin está manejando, que están causando lag:
Los primeros pasos que recomendamos que tomes es buscar si hay una versión actualizada del plugin que estás usando, que tenga más optimizaciones implementadas, para reducir el lag (como una actualización que intente ejecutar los eventos del plugin de forma asíncrona, en lugar de en el hilo principal de la CPU del servidor).
Por ejemplo, el plugin "InventoryRollback" tiene una versión más nueva llamada "InventoryRollbackPlus", que es una versión actualizada, mejorada y con menos lag del plugin. Ver aquí.
Si no existe tal actualización, o no hay una que mejore el estado del informe de timings de tu servidor, entonces buscar qué dice el informe de timings que está haciendo tu plugin para causar lag sería el siguiente paso que recomendamos que tomes.
Ejemplo:
Podemos ver que InventoryRollback tiene algunos eventos que están causando más lag en el servidor que otros, como, InventoryRollback::Event: m.d.i.l.EventLogs (PlayerQuitEvent) (consulta la captura de pantalla).
En la configuración de InventoryRollback podemos ver que hay opciones en la configuración que controlan cuándo hace una copia de seguridad del inventario de los jugadores.
Específicamente, nota quit, que es el evento más laggy al leer desde nuestros timings. Podemos desactivar ese evento estableciendo el valor en 0.
Lo que esto busca es reducir el impacto que un plugin específico tiene en los ticks de tu servidor. Siguiendo este tipo de método con otros plugins que causen problemas en tus timings, ayudará a disminuir la carga en tu servidor.
Mirar esta pestaña puede parecer abrumador al principio, pero se puede desglosar bastante fácilmente.
El informe de timings tiene los números del "lag" codificados por colores (rojo siendo el peor, blanco teniendo poco impacto), sin embargo, las diferentes secciones no lo están, así que he codificado por colores la parte principal de los Timings que estaremos mirando.
Colores:
Aqua = Entidades
Rosa = Mundo
Amarillo = Plugins
Comenzando desde arriba, podemos ver que el Tick Completo del Servidor está siendo afectado principalmente por Minecraft::world -doTick, y al expandir doTick, vemos que tickEntities es el mayor causante de retraso.
Al expandir los siguientes valores, llegamos a esto:
Aquí vemos que los mooshroom están ocupando mucho del tick. Esto significa que probablemente hay muchos hongos en tu servidor.
Esto podría estar sucediendo por múltiples razones, como:
Jugadores usándolos para granjas.
La configuración de generación de mobs de tu servidor es alta y permite que aparezcan muchos.
Muchos chunks que contienen el mob están cargados.
Las cosas que podrías hacer para reducir el impacto de estas cosas enumeradas podrían ser cosas como:
Introducir una expulsión AFK, para que los jugadores no puedan mantener cargados los chunks durante largos períodos de tiempo.
Cambiar la configuración de generación de mobs en bukkit.yml para reducir la cantidad de apariciones. Podrías habilitar per-player-mob-spawns en paper.yml, que tiene como objetivo cambiar la distribución de los mobs entre los jugadores en el servidor de manera más justa (esto puede resultar en más mobs siendo generados, dependiendo de cómo está configurado tu servidor).
Reducir la distancia de renderizado para los chunks y usar simulation-distance en server.properties (cuántos chunks alrededor del jugador se actualizarán, hazlo más pequeño que la distancia de renderizado).
Este artículo es un poco diferente de los demás, ya que se actualizará muy frecuentemente para hacerlo lo mejor posible.
Software al que se aplica esto:
Paper y cualquiera de sus bifurcaciones
Software al que no se aplica esto:
Pocketmine
Nukkit
Vanilla Bedrock
Vanilla Java
Spigot o sus bifurcaciones anteriores
Otros
* Si estás utilizando Spigot o alguna bifurcación anterior, realmente no deberías hacerlo y deberías usar bifurcaciones más optimizadas, como Paper o Purpur (recomendamos Purpur).
Términos Clave:
TPS son los ticks por segundo. Hay 20 ticks de Minecraft en un segundo en la vida real, por lo tanto, si tu servidor no tiene lag, debería estar funcionando a 20TPS.
MSPT es cuánto tiempo lleva cada tick. Cuanto menor sea este número, mejor.
Ping (ms). El 99.9% del tiempo, esto no está relacionado con el rendimiento de tu servidor, sino con el retraso de ubicación entre tu cliente y el servidor.
🏁 Empezando 🏁
La primera sección requerirá editar los archivos de configuración de tu servidor que se encuentran en la carpeta raíz del servidor.
Para acceder a estos archivos si no sabes cómo hacerlo, sigue esta mini guía:
Acceder y editar archivos de configuración:
Ve al panel, en witherpanel.com.
Selecciona el servidor de la lista.
Navega hasta el Administrador de Archivos en el lado del panel. Accede a la carpeta config.
Aquí puedes ver la lista de archivos del servidor que incluye los archivos de configuración que queremos.
Hay una lista de configuraciones que se recomienda cambiar para obtener el servidor más optimizado.
Podríamos enumerarlos todos aquí, pero hay una lista perfectamente buena que las personas han hecho a lo largo de los años, que recomendamos que cambies las configuraciones para que coincidan.
La guía que combina muchos otros guías más pequeñas está aquí: https://github.com/YouHaveTrouble/minecraft-optimization y aquí https://www.spigotmc.org/threads/guide-server-optimization%E2%9A%A1.283181/
Te recomendamos que revises ambos y apliques los cambios a tu servidor.
Si tu servidor requiere funcionar lo más cerca posible del comportamiento vanilla (mientras usas bifurcaciones de Spigot), algunas de las configuraciones que modifican características principales del juego, como el comportamiento de los contenedores y la generación de mobs, es posible que no desees cambiarlas. Dicho esto, es tu servidor, ¡así que haz lo que quieras!
🐌 Encontrando las causas del lag: 🐌
Has seguido esas 2 guías, cambiando muchas configuraciones en tu servidor, pero todavía tiene un bajo TPS...
Te mostraremos cómo depurar qué está causando el lag en tu servidor.
Esto es para Paper y bifurcaciones superiores, ya que Spigot no tiene esta funcionalidad actualizada (Spigot solo tiene Timings v1, mientras que Paper/bifurcaciones tienen Timings v2, que es lo que necesitamos).
Pasos:
En tu servidor, ejecuta el comando timings on.
Deja tu servidor funcionando durante unos 30 minutos, ya que los timings recopilan datos para el informe.
Después de 30 minutos, ejecuta el comando timings paste y ve al enlace que aparece en la consola.
Aquí es donde comienza la diversión, mirando los timings para ver qué está causando el lag.
Guía:
Para empezar más fácilmente, vamos a echar un vistazo a la pestaña PLUGINS, para ver si alguno de tus plugins está causando lag.
Este es un ejemplo de informe de timings, en la mencionada pestaña:
Puedes ver en la imagen que el plugin "InventoryRollback" está ocupando más del promedio del tick.
Haciendo clic en InventoryRollback::Combined Total, obtendrás una lista más detallada de eventos que el plugin está manejando, que están causando lag:
Los primeros pasos que recomendamos que tomes es buscar si hay una versión actualizada del plugin que estás usando, que tenga más optimizaciones implementadas, para reducir el lag (como una actualización que intente ejecutar los eventos del plugin de forma asíncrona, en lugar de en el hilo principal de la CPU del servidor).
Por ejemplo, el plugin "InventoryRollback" tiene una versión más nueva llamada "InventoryRollbackPlus", que es una versión actualizada, mejorada y con menos lag del plugin. Ver aquí.
Si no existe tal actualización, o no hay una que mejore el estado del informe de timings de tu servidor, entonces buscar qué dice el informe de timings que está haciendo tu plugin para causar lag sería el siguiente paso que recomendamos que tomes.
Ejemplo:
Podemos ver que InventoryRollback tiene algunos eventos que están causando más lag en el servidor que otros, como, InventoryRollback::Event: m.d.i.l.EventLogs (PlayerQuitEvent) (consulta la captura de pantalla).
En la configuración de InventoryRollback podemos ver que hay opciones en la configuración que controlan cuándo hace una copia de seguridad del inventario de los jugadores.
Específicamente, nota quit, que es el evento más laggy al leer desde nuestros timings. Podemos desactivar ese evento estableciendo el valor en 0.
Lo que esto busca es reducir el impacto que un plugin específico tiene en los ticks de tu servidor. Siguiendo este tipo de método con otros plugins que causen problemas en tus timings, ayudará a disminuir la carga en tu servidor.
Ahora pasamos a la pestaña TIMINGS.
Mirar esta pestaña puede parecer abrumador al principio, pero se puede desglosar bastante fácilmente.
El informe de timings tiene los números del "lag" codificados por colores (rojo siendo el peor, blanco teniendo poco impacto), sin embargo, las diferentes secciones no lo están, así que he codificado por colores la parte principal de los Timings que estaremos mirando.
Colores:
Aqua = Entidades
Rosa = Mundo
Amarillo = Plugins
Comenzando desde arriba, podemos ver que el Tick Completo del Servidor está siendo afectado principalmente por Minecraft::world -doTick, y al expandir doTick, vemos que tickEntities es el mayor causante de retraso.
Al expandir los siguientes valores, llegamos a esto:
Aquí vemos que los mooshroom están ocupando mucho del tick. Esto significa que probablemente hay muchos hongos en tu servidor.
Esto podría estar sucediendo por múltiples razones, como:
Jugadores usándolos para granjas.
La configuración de generación de mobs de tu servidor es alta y permite que aparezcan muchos.
Muchos chunks que contienen el mob están cargados.
Las cosas que podrías hacer para reducir el impacto de estas cosas enumeradas podrían ser cosas como:
Introducir una expulsión AFK, para que los jugadores no puedan mantener cargados los chunks durante largos períodos de tiempo.
Cambiar la configuración de generación de mobs en bukkit.yml para reducir la cantidad de apariciones. Podrías habilitar per-player-mob-spawns en paper.yml, que tiene como objetivo cambiar la distribución de los mobs entre los jugadores en el servidor de manera más justa (esto puede resultar en más mobs siendo generados, dependiendo de cómo está configurado tu servidor).
Reducir la distancia de renderizado para los chunks y usar simulation-distance en server.properties (cuántos chunks alrededor del jugador se actualizarán, hazlo más pequeño que la distancia de renderizado).
Actualizado el: 31/05/2024
¡Gracias!