Optimización del Servidor

Cuando nuestros servidor empieza a tener un número mayor de jugadores, de plugins o de mods, es importante optimizarlo para brindar la mejor experiencia de juego a nuestros usuarios.

1. Optimización para Reducir el Consumo de Memoria RAM

La optimización de nuestro servidor para reducir el consumo de memoria ram tiene un límite. Habrá un momento en el que será necesario aumentar la ram. Consulta este artículo para saber cómo hacerlo.

Antes de explicar los métodos para optimizar el uso de la memoria ram es importante que primero entendamos cómo funciona, sin entrar en demasiado detalle, la memoria ram en servidores de Minecraft.

1.1. El cómo Nuestro Servidor usa la Memoria RAM

La memoria ram es la memoria a corto plazo de un equipo informático (PCs, teléfonos móviles, servidores, etc). La ram tiene una velocidad mayor para almacenar y compartir datos con el procesador que los discos duros/estado sóldo, por lo que la memoria ram tiene como principal utilidad el almacenamiento de datos a los que se necesita un fácil y rápido acceso.

En el caso de los servidores de Minecraft, estos datos que deben ser fáciles y rápidos de obtener son:

  • Chunks: Un chunk es un trozo de nuestro mundo que tiene como dimensiones 16x16 bloques y va desde la bedrock al último bloque construible en el cielo. Lo que se almacena en la memoria ram es el estado de cada entidad y bloque en ese chunk específico, y se hace 20 veces por segundo (más adelante hablaremos de esto y de cómo está relacionado con los TPS). Únicamente los chunks que hayan sido visitados desde que se encendió el servidor van a encontrarse cargados en la memoria ram. El resto de chunks que hayan sido generados, pero no cargados, quedarán almacenados en el disco duro/estado sólido, esperando a ser cargados. Es por esta razón que si usas un plugin como Chunky para pregenerar chunks recomendamos que, al acabarse el proceso, reinicies el servidor. Así, obtendrás el beneficio de tener los chunks pregenerados pero sin tener un uso de memoria ram exagerado.

  • Información de Plugins: Los datos de los plugins que estén relacionados con los jugadores, como por ejemplo el dinero que tiene un jugador. También quedan cargados los datos que no están relacionados con jugadores, como por ejemplo la configuración de un plugin.

  • Información de Mods: De forma similar a los plugins, los mods también tienen datos independientes y datos relacionados con los jugadores u otras entidades. Por ejemplo, en un mod que agrega nuevas criaturas a Minecraft, necesitará mantener un control de las características de cada uno de esos mobs.

  • Mobs

1.2. Métodos de Optimización del Uso de Memoria Ram

Ahora que ya hemos visto el principal uso de la ram que hace nuestro servidor de Minecraft, podemos entender mucho mejor porqué ciertos métodos funcionan. A continuación comentaremos algunos métodos que hemos usado con servidores de nuestros clientes y que con los cuales hemos visto una mejora. De todas formas, en otros artículos sobre optimización se pueden encontrar otros métodos que también sreán útiles.

  1. Reinicio del servidor: Es una solución sencilla y ámpliamente usada, sobretodo el servidores de otros videojuegos. Para facilitarte la vida recomendamos que instales un plugin de reinicios automáticos cada ciertas horas. Unos intervalo de tiempo aceptables para hacer reinicio es cada 24, 12 o 6 horas, todo dependiende de si la duración media de una sesión de juego es más larga o corta (deberíamos de tratar de evitar que un jugador experimente dos reinicios en una misma sesión de juego). Un plugin de reinicios automáticos que recomendamos, por ejemplo es UltimateAutoRestart, puesto que incluye ciertas opciones de personalización que harán un poco más agradable la experiencia de tus jugadores antes y durante el reinicio. Recomendamos que escojas un servicio de hosting que cuente con un buen procesador (como RetlyHosting) para que el reinicio no sea eterno. El reinicio del servidor servirá para que no hayan tantos datos cargados en la memoria ram del servidor.

  2. Establecer un límite de jugadores: Como has podido observar en el apartado anterior, casi toda la información guardada en la memoria ram aumenta a medida que el número de jugadores aumenta, por lo que limitar la cantidad de jugadores que pueden entrar al servidor puede ser efectivo aunque un poco drástico. No recomendamos esta opción a menos que lo hayas probado todo y no puedas ampliar la ram de tu servidor por razones económicas.

  3. Reducir el número de entidades: Si la cantidad de entidades es mayor, hay más datos a los que se requiere un acceso rápido y por lo tanto aumentará el consumo de ram. Recomendamos el uso de un plugin correctamente optimizado para la eliminación de entidades cada cierto tiempo.

  4. Reducir la cantidad de mobs: Con los mobs sucede lo mismo que con las entidades, así que es recomendado reduri la cantidad. Recomendamos el uso del plugin StackMob, el cuál si es bien configurado, permitirá reducir todo lo que se quiera la cantidad de mobs que hay en el mundo. Con este plugin los mobs no desaparecerán, sino que se juntarán en uno solo. Así, por ejemplo, se podrá observar una oveja con un x15 en su nombre, lo que indicará que esa oveja representa realmente 15 de estas.

2. Optimización para reducir el lag por bajos TPS

2.1. ¿Qué son los TPS y qué los provoca?

Los TPS son los Ticks Por Segundo que tiene el servidor en un momento dado.

El tick es la unidad de tiempo en Minecraft, y es cada cuánto se actualiza el estado de todo lo que está ocurriendo en el mundo. Por ejemplo, el grado de iluminación que tiene un bloque se va actualizando cada 1 tick.

Si el servidor va perfecto, 1 tick es equivalente a 0,05 segundos, o que es lo mismo, 20 ticks es equivalente a 1 segundo. De aquí viene que si un servidor va a 20 TPS, va perfecto. Cuando un servidor pasa a ir lento, y por lo tanto los TPS bajan, significa que hay menos actualizaciones de estado (menos ticks) por cada segundo, y por lo tanto, los elementos del mundo irá más lento.

Para entenderlo se puede hacer un símil a los FPS (Frames Por Segundo), donde si hay menos FPS, el videojuego o vídeo se verá menos fluido. De todas formas se tiene que tener en cuenta que los FPS y los TPS no son lo mismo. Los FPS vienen provocados por el cliente (el juego de Minecraft) y los TPS por la calidad del hardware que esté corriendo el servidor. Así, un mejor procesador asegurará una mayor cantidad de TPS a grados mayores de exigencia de potencia (cuando se aumenta mucho la cantidad de jugadores, plugins, etc).

2.2. Optimización del Servidor para TPS Altos y Estables

En este apartado, aunque comentaremos algunas opciones que pueden ser editadas para mejorar el rendimiento, haremos mención de otros artículos/guías que hemos encontrado y que son muy ámplios.

  1. Reducir el lag producido por la redstone: Se puede utilizar un plugin como RedstoneDetector para limitar el uso de la redstone. Además, en server.properties puedes desactivar el uso de bloques de comandos.

  2. Pregenerar el mundo: Ya hemos hablado de la pregeneración en este artículo, pero solo habíamos visto los puntos negativos que tiene y cómo eliminarlos. ¡Pero también tiene de positivos! Pregenerando el mundo hará que el procesador no tenga que generar los chunks en ese momento sino que solamente se dedicará a recolectar la información ya procesada del disco duro y a mostrarla por pantalla. Si no pregeneras el mundo, puede ocurrir algo así:

  1. Optimizar los archivos de configuración: Es recomendable modificar los valores de ciertas opciones en los archivos de configuración del servidor. Aunque esto puede variar en función del software, dejamos a continuación unos ejemplos de archivos con algunas opciones optimizadas

    1. Bukkit.yml:

spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 7
  water-ambient: 10
  water-underground-creature: 5
  ambient: 1
chunk-gc:
  period-in-ticks: 400
ticks-per:
  animal-spawns: 400
  monster-spawns: 5
  water-spawns: 11
  water-ambient-spawns: 21
  water-underground-creature-spawns: 11
  ambient-spawns: 31
  autosave: 6000
  1. Spigot.yml:

 save-user-cache-on-stop-only: true
    max-tick-time:
      tile: 10
      entity: 20
    mob-spawn-range: 6
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8
      water: 16
      villagers: 24
      flying-monsters: 24
    merge-radius:
      exp: 4.0
      item: 6.0
    tick-inactive-villagers: false
   nerf-spawner-mobs: true
   arrow-despawn-rate: 300
   trident-despawn-rate: 300

Reinteramos que es posible que estos archivos no se encuentren en tu servidor por la razón de que tu servidor está usando otro software (como por ejemplo Forge). Deberías conocer primero cuál es el software que está usando tu servidor y luego buscar una guía que se dedique a comentar todos los puntos de optimización para ese software.

2.3. Artículos Complementarios

Como hemos comentado en el apartado anterior, también queríamos hacer mención de artículos que hemos revisado y nos han parecido interesantes. Es posible que algunos de estos estén en inglés. En el caso de que no entiendas el inglés puedes traducir la página usando la extensión de Google Traductor.

  1. Minecraft Server Optimization Guide: Aquí se hace un repaso de todas las opciones recomendables a optimizar en los software Paper, Pufferfish y Purpur (los mejores en cuanto a optimización de servidores con plugins).

  2. Esta lista se irá ampliando a medida que encontremos otros artículos

Última actualización