Optimizar el rendimiento de un servidor de Minecraft

Esta guia explica que hace cada parametro, que valor recomendamos usar y por que puede mejorar el rendimiento del servidor. Esta pensada principalmente para servidores Paper, Purpur o Pufferfish.


Indice

  • 1. Elegir el software correcto
  • 2. Ajustes en server.properties
  • 3. Ajustes en bukkit.yml
  • 4. Ajustes en spigot.yml
  • 5. Ajustes en Paper, Purpur y Pufferfish
  • 6. Configuracion de Java y JVM
  • 7. Monitoreo y diagnostico
  • 8. Buenas practicas adicionales

Antes de empezar

Antes de modificar cualquier archivo, recomendamos:

  • Apagar el servidor antes de editar configuraciones importantes.
  • Crear una copia de seguridad de los archivos que vas a modificar.
  • Aplicar los cambios de a poco y medir el resultado con Spark, TPS y MSPT.
  • No copiar configuraciones extremas sin entenderlas, porque pueden afectar la jugabilidad.

Objetivo recomendado: mantener el servidor cerca de 20 TPS y con un MSPT estable por debajo de 50 ms. Si el MSPT supera 50 ms de forma constante, el servidor no llega a procesar un tick completo a tiempo y empieza el lag.


1. Elegir el software correcto

El software del servidor es la base del rendimiento. Usar un JAR poco optimizado puede limitar el rendimiento aunque tengas buen hardware.

Software Recomendacion Explicacion
Paper Recomendado para la mayoria Es mucho mas optimizado que Spigot y mantiene alta compatibilidad con plugins Bukkit/Spigot.
Pufferfish Recomendado para servidores con mas carga Agrega optimizaciones extra sobre Paper, especialmente en pathfinding, entidades y carga general.
Purpur Recomendado si queres mas personalizacion Basado en Pufferfish. Permite modificar muchos comportamientos del juego sin usar tantos plugins.
Spigot No recomendado si buscas rendimiento Funciona, pero esta menos optimizado que Paper y sus forks.
CraftBukkit No recomendado Es una opcion antigua y con menos optimizaciones modernas.

Opcion recomendada: usar Paper si queres estabilidad y compatibilidad. Usar Purpur si necesitas mas opciones de configuracion. Evitar JARs "milagrosos" de pago o builds desconocidas.


2. Ajustes en server.properties

Archivo: server.properties

Este archivo controla configuraciones generales del servidor, como distancias de renderizado, simulacion, red, spawn y comportamiento base.

2.1 sync-chunk-writes

sync-chunk-writes=false

Que hace: define si el guardado de chunks se realiza de forma sincronica o asincronica.

Valor recomendado: false.

Por que: cuando esta en false, Paper puede guardar chunks de forma mas eficiente sin bloquear tanto el hilo principal del servidor. Esto reduce tirones o picos de lag al guardar mundo.

Advertencia: usalo solamente en Paper, Purpur o forks compatibles. En servidores modernos Paper/Purpur es una configuracion habitual.

2.2 simulation-distance

simulation-distance=4

Que hace: controla la distancia, en chunks, donde el servidor procesa entidades, mobs, cultivos, redstone y otros sistemas activos alrededor de cada jugador.

Valor recomendado: entre 4 y 6.

Recomendacion practica: para servidores con muchos jugadores o recursos limitados, usar 4. Para servidores mas chicos o con mejor hardware, usar 5 o 6.

Por que: es uno de los parametros que mas impacta en CPU. Cuanto mas alto sea, mas chunks activos debe procesar el servidor por cada jugador conectado.

2.3 view-distance

view-distance=7

Que hace: controla cuantos chunks puede ver el jugador alrededor suyo. Afecta la cantidad de chunks enviados al cliente.

Valor recomendado: entre 6 y 8.

Recomendacion practica: usar 7 como punto medio. No recomendamos bajar de 6 salvo que sea estrictamente necesario.

Por que: bajar este valor reduce carga de red, memoria y envio de chunks. Sin embargo, si se baja demasiado, el jugador nota poca distancia visual.

Regla importante: simulation-distance deberia ser menor o igual que view-distance.

2.4 entity-broadcast-range-percentage

entity-broadcast-range-percentage=75

Que hace: reduce el rango en el que el servidor envia informacion de entidades a los jugadores.

Valor recomendado: 75.

Opcion agresiva: 50 si tenes muchos jugadores o muchas entidades.

Por que: reduce paquetes enviados a los clientes y baja carga de red. Tambien puede ayudar cuando hay muchas entidades visibles, como mobs, animales o items.

Impacto en jugabilidad: si lo bajas demasiado, algunas entidades pueden aparecer visualmente mas tarde para el jugador.

2.5 max-players

max-players=50

Que hace: define el maximo de jugadores que pueden entrar al servidor.

Valor recomendado: poner un limite realista segun CPU, RAM, plugins y tipo de servidor.

Por que: no conviene poner un numero muy alto solo por apariencia. El limite debe acompañar la capacidad real del servidor para evitar saturacion.

2.6 allow-flight

allow-flight=true

Que hace: permite que jugadores vuelen si usan modos, plugins o sistemas que lo requieren.

Valor recomendado: true si usas plugins de vuelo, anticheat avanzado o modos especiales.

Por que: en algunos servidores, dejarlo en false puede expulsar jugadores por falso positivo si el plugin mueve al jugador, si hay lag o si usan habilidades especiales.


3. Ajustes en bukkit.yml

Archivo: bukkit.yml

Este archivo controla spawns, limites de mobs y frecuencia con la que el servidor intenta generar entidades.

3.1 spawn-limits

spawn-limits:
  monsters: 20
  animals: 5
  water-animals: 2
  water-ambient: 2
  ambient: 1

Que hace: limita la cantidad maxima de mobs que pueden existir por jugador en distintas categorias.

Valores recomendados:

  • monsters: 20 para reducir carga de mobs hostiles.
  • animals: 5 para evitar exceso de animales pasivos.
  • water-animals: 2 para reducir entidades acuaticas pesadas.
  • water-ambient: 2 para reducir peces y ambiente acuatico.
  • ambient: 1 para reducir murcielagos y mobs ambientales.

Por que: los mobs consumen CPU por IA, movimiento, colisiones y pathfinding. En servidores con muchos jugadores, los valores por defecto pueden generar demasiadas entidades activas.

Impacto en jugabilidad: valores demasiado bajos pueden hacer que el mundo se sienta vacio o que las granjas rindan menos.

3.2 ticks-per

ticks-per:
  monster-spawns: 5
  animal-spawns: 400
  water-spawns: 400
  ambient-spawns: 400

Que hace: define cada cuantos ticks el servidor intenta generar mobs.

Valor recomendado: mantener monster-spawns en 5 y subir animales, agua y ambiente a 400.

Por que: reduce la frecuencia de intentos de spawn de entidades menos importantes. Esto baja carga de CPU sin romper demasiado la experiencia.

Importante: Minecraft funciona normalmente a 20 ticks por segundo. Un valor de 400 equivale aproximadamente a 20 segundos entre intentos.


4. Ajustes en spigot.yml

Archivo: spigot.yml

Este archivo contiene optimizaciones importantes para entidades, activacion de IA, mobs de spawner, items y tolvas.

4.1 entity-activation-range

world-settings:
  default:
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8
      water: 8
      villagers: 16
      flying-monsters: 48
    tick-inactive-villagers: false

Que hace: define a que distancia una entidad se mantiene activa y procesa IA.

Valores recomendados:

  • animals: 16 reduce la IA de animales lejanos.
  • monsters: 24 mantiene mobs hostiles activos a una distancia razonable.
  • raiders: 48 evita problemas con raids, manteniendolas activas a mas distancia.
  • misc: 8 reduce carga de entidades varias.
  • water: 8 baja carga de mobs acuaticos.
  • villagers: 16 reduce carga de aldeanos, que suelen ser pesados.
  • flying-monsters: 48 mantiene mobs voladores funcionales a mas distancia.
  • tick-inactive-villagers: false evita procesar aldeanos inactivos.

Por que: la IA de entidades es una de las fuentes mas comunes de lag. Reducir el rango de activacion evita que el servidor procese entidades que estan lejos de los jugadores.

Impacto en jugabilidad: si los valores son demasiado bajos, mobs o animales pueden parecer menos reactivos hasta que el jugador se acerque.

4.2 merge-radius

    merge-radius:
      item: 4.0
      exp: 6.0

Que hace: define a que distancia se fusionan items y orbes de experiencia en el suelo.

Valor recomendado: item: 4.0 y exp: 6.0.

Por que: muchos items sueltos generan muchas entidades. Al fusionarlos, el servidor procesa menos entidades y baja el consumo de CPU.

Impacto en jugabilidad: valores muy altos pueden hacer que items se agrupen desde demasiado lejos, lo que puede sentirse poco natural.

4.3 mob-spawn-range

    mob-spawn-range: 4

Que hace: define el radio de chunks donde pueden aparecer mobs alrededor de cada jugador.

Valor recomendado: 4.

Por que: ayuda a que los mobs aparezcan dentro de zonas que realmente estan siendo simuladas. Debe estar alineado con simulation-distance.

Regla recomendada: mob-spawn-range debe ser menor o igual que simulation-distance.

4.4 nerf-spawner-mobs

    nerf-spawner-mobs: true

Que hace: desactiva la IA normal de mobs generados por spawners hasta que un jugador este cerca.

Valor recomendado: true.

Por que: las granjas con spawners pueden acumular muchas entidades. Al reducir su IA, baja notablemente el uso de CPU.

Impacto en jugabilidad: puede afectar granjas que dependen de comportamiento normal de mobs, aunque para la mayoria de servidores survival es una optimizacion recomendable.

4.5 hopper-transfer y hopper-check

    hopper-transfer: 8
    hopper-check: 8

Que hace:

  • hopper-transfer define cada cuantos ticks una tolva transfiere items.
  • hopper-check define cada cuantos ticks una tolva revisa si hay items para recoger o mover.

Valor recomendado: 8 y 8.

Por que: las tolvas pueden consumir mucha CPU, sobre todo en granjas grandes. Aumentar estos valores reduce la frecuencia de chequeos.

Impacto en jugabilidad: las tolvas funcionaran mas lento que en vanilla, pero el servidor tendra mejor estabilidad.


5. Ajustes en Paper, Purpur y Pufferfish

Dependiendo de la version, estas opciones pueden estar en paper-global.yml, paper-world-defaults.yml o archivos dentro de la carpeta config.

5.1 redstone-implementation

  redstone-implementation: ALTERNATE_CURRENT

Que hace: cambia la implementacion del motor de redstone.

Valor recomendado: ALTERNATE_CURRENT, si tu version lo soporta.

Por que: Alternate Current suele mejorar el rendimiento de redstone y reducir calculos innecesarios.

Impacto en jugabilidad: puede cambiar comportamientos tecnicos muy especificos de redstone. Si tu servidor tiene mecanismos muy complejos, probalo antes.

5.2 use-faster-eigencraft-redstone

  use-faster-eigencraft-redstone: true

Que hace: activa una optimizacion alternativa para redstone en versiones/configuraciones donde este disponible.

Valor recomendado: true, si tu version todavia usa esta opcion.

Por que: reduce carga generada por circuitos de redstone.

Nota: algunas versiones nuevas pueden no usar este parametro o reemplazarlo por redstone-implementation.

5.3 disable-move-event en tolvas

  hopper:
    disable-move-event: true

Que hace: evita que se dispare un evento de plugin cada vez que una tolva mueve un item.

Valor recomendado: true si no dependes de plugins que controlen movimientos de items en tolvas.

Por que: en servidores con muchas tolvas, los eventos constantes pueden generar mucha carga.

Advertencia: si usas plugins de proteccion, logs, antigrief o sistemas economicos que necesitan detectar movimiento por tolvas, puede convenir dejarlo en false.

5.4 ignore-occluding-blocks

  hopper:
    ignore-occluding-blocks: true

Que hace: optimiza chequeos relacionados con bloques solidos encima o cerca de tolvas.

Valor recomendado: true.

Por que: reduce verificaciones innecesarias en sistemas grandes con muchas tolvas.

5.5 cooldown-when-full

  hopper:
    cooldown-when-full: true

Que hace: aplica cooldown a tolvas llenas para que no intenten mover items constantemente.

Valor recomendado: true.

Por que: una tolva llena que revisa todo el tiempo genera carga sin aportar nada. Esta opcion reduce ese trabajo innecesario.

5.6 per-player-mob-spawns

  entities:
    per-player-mob-spawns: true

Que hace: calcula los spawns de mobs por jugador en vez de usar un comportamiento global menos equilibrado.

Valor recomendado: true.

Por que: mejora la distribucion de mobs entre jugadores y evita que una zona o jugador consuma demasiado el limite global de mobs.

5.7 max-entity-collisions

  entities:
    max-entity-collisions: 2

Que hace: limita la cantidad de colisiones que una entidad procesa con otras entidades.

Valor recomendado: 2.

Por que: muchas entidades juntas, como vacas, aldeanos o mobs en granjas, generan muchas colisiones. Limitarlo reduce CPU.

Impacto en jugabilidad: valores muy bajos pueden hacer que algunas entidades se empujen menos entre si.

5.8 prevent-moving-into-unloaded-chunks

  prevent-moving-into-unloaded-chunks: true

Que hace: evita que jugadores o entidades se muevan hacia chunks que no estan cargados.

Valor recomendado: true.

Por que: reduce errores, tirones y situaciones donde el servidor debe cargar chunks de golpe.

5.9 delay-chunk-unloads-by

  delay-chunk-unloads-by: 10s

Que hace: retrasa la descarga de chunks despues de que dejan de usarse.

Valor recomendado: 10s.

Por que: evita cargar y descargar el mismo chunk repetidamente cuando un jugador se mueve cerca del borde de carga.

Impacto: puede usar algo mas de memoria, pero mejora estabilidad y reduce picos.

5.10 max-auto-save-chunks-per-tick

  max-auto-save-chunks-per-tick: 6

Que hace: limita cuantos chunks puede guardar automaticamente el servidor por tick.

Valor recomendado: 6.

Por que: evita picos fuertes de escritura en disco durante el guardado automatico.

Nota: si el servidor tiene disco muy rapido, se puede ajustar mas alto. Si hay picos de I/O, bajarlo puede ayudar.

5.11 treasure-maps

  treasure-maps:
    enabled: false

Que hace: desactiva mapas del tesoro que buscan estructuras lejanas.

Valor recomendado: false, especialmente en servidores survival publicos.

Por que: la busqueda de estructuras puede forzar generacion o busqueda de chunks lejanos y causar picos de lag.

Impacto en jugabilidad: los mapas del tesoro dejaran de funcionar como en vanilla.


6. Configuraciones extra para Purpur

Archivo: purpur.yml

6.1 Lobotomizar aldeanos

  villager:
    lobotomize:
      enabled: true

Que hace: reduce la IA de aldeanos que no necesitan procesar comportamiento completo.

Valor recomendado: true en servidores con muchos aldeanos o zonas de tradeo.

Por que: los aldeanos son entidades pesadas por sus rutinas, pathfinding y trabajos.

Impacto en jugabilidad: puede cambiar el comportamiento natural de aldeanos. Probar antes si el servidor depende mucho de mecanicas vanilla.

6.2 entities-can-use-portals

  entities-can-use-portals: false

Que hace: evita que entidades usen portales.

Valor recomendado: false.

Por que: reduce casos donde entidades fuerzan carga de dimensiones o chunks.

6.3 zombie aggressive towards villager when lagging

  zombie:
    aggressive-towards-villager-when-lagging: false

Que hace: evita que zombies sigan procesando agresividad hacia aldeanos cuando el servidor esta con lag.

Valor recomendado: false.

Por que: reduce pathfinding y calculos de IA en momentos donde el servidor ya esta exigido.


7. Configuracion de Java y JVM

Minecraft moderno requiere Java actualizado. Para Minecraft 1.20.5 o superior, recomendamos Java 21 o superior.

7.1 Memoria minima y maxima

-Xms8G -Xmx8G

Que hace:

  • -Xms define la memoria inicial asignada a Java.
  • -Xmx define la memoria maxima que Java puede usar.

Valor recomendado: usar el mismo valor en -Xms y -Xmx.

Por que: evita que Java tenga que redimensionar el heap durante la ejecucion, reduciendo pausas y comportamiento irregular.

7.2 Aikar's Flags recomendadas

java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar server.jar nogui

Que hacen estas flags:

  • -XX:+UseG1GC: usa el Garbage Collector G1, recomendado para servidores Minecraft.
  • -XX:+ParallelRefProcEnabled: procesa referencias en paralelo para reducir pausas.
  • -XX:MaxGCPauseMillis=200: objetivo de pausas maximas del GC, en milisegundos.
  • -XX:+UnlockExperimentalVMOptions: habilita opciones experimentales necesarias para algunas flags.
  • -XX:+DisableExplicitGC: evita que plugins o codigo llamen manualmente al GC y generen pausas.
  • -XX:+AlwaysPreTouch: reserva y prepara la memoria al iniciar, mejorando estabilidad durante ejecucion.
  • -XX:G1NewSizePercent=30 y -XX:G1MaxNewSizePercent=40: ajustan el tamano de la generacion joven.
  • -XX:G1HeapRegionSize=8M: define el tamano de regiones del heap.
  • -XX:G1ReservePercent=20: reserva memoria para evitar problemas durante coleccion.
  • -XX:G1HeapWastePercent=5: controla cuanto desperdicio de heap se permite antes de limpiar.
  • -XX:G1MixedGCCountTarget=4: ajusta la cantidad objetivo de ciclos mixtos de GC.
  • -XX:InitiatingHeapOccupancyPercent=15: inicia GC antes, evitando acumulacion excesiva.
  • -XX:G1MixedGCLiveThresholdPercent=90: define umbral para regiones candidatas a GC mixto.
  • -XX:G1RSetUpdatingPauseTimePercent=5: limita tiempo dedicado a actualizar remembered sets.
  • -XX:SurvivorRatio=32: ajusta relacion de espacios survivor.
  • -XX:+PerfDisableSharedMem: desactiva memoria compartida de rendimiento para reducir overhead.
  • -XX:MaxTenuringThreshold=1: controla cuanto tiempo sobreviven objetos antes de promocionarse.
  • -jar server.jar nogui: inicia el JAR del servidor sin interfaz grafica.

Recomendacion: no asignes toda la RAM fisica al servidor. Deja memoria libre para el sistema operativo, archivos, cache, panel, base de datos y otros procesos.


8. Monitoreo y diagnostico

8.1 Spark

Spark es una herramienta para analizar rendimiento. En Paper 1.21+ suele venir integrada.

  • /spark health: muestra CPU, memoria, TPS, MSPT y estado general.
  • /spark tps: muestra los TPS del servidor.
  • /spark profiler: inicia un analisis profundo para detectar que plugin, entidad o tarea causa lag.
  • /spark profiler --timeout 60: ejecuta un perfil durante 60 segundos.

Como interpretar:

  • 20 TPS: rendimiento ideal.
  • 18 a 19 TPS: rendimiento aceptable, pero conviene revisar.
  • Menos de 18 TPS: ya hay lag perceptible.
  • MSPT menor a 50: el servidor procesa los ticks a tiempo.
  • MSPT mayor a 50: el servidor no llega a mantener 20 TPS.

8.2 Timings

/timings on
/timings paste

Que hace: genera un reporte basico del rendimiento del servidor y plugins.

Recomendacion: usar Spark antes que Timings cuando sea posible, porque Spark suele ser mas completo y preciso.


9. Buenas practicas adicionales

9.1 Pregenerar el mundo

Recomendacion: usar un plugin como Chunky.

/chunky radius 5000
/chunky start

Que hace: genera chunks antes de que los jugadores exploren.

Por que: la generacion de mundo en vivo consume mucha CPU y disco. Pregenerar reduce picos de lag cuando los jugadores viajan.

9.2 Usar worldborder

/worldborder set 10000

Que hace: limita el tamano del mundo.

Por que: evita exploracion infinita, reduce almacenamiento y hace mas facil pregenerar el mapa.

9.3 Evitar /reload

No recomendado:

/reload

Por que: puede causar memory leaks, duplicacion de tareas, errores de plugins y comportamiento inestable.

Opcion recomendada: reiniciar completamente el servidor desde el panel.

9.4 Revisar plugins

Muchos problemas de rendimiento no vienen del hardware, sino de plugins mal optimizados.

  • Elimina plugins que no uses.
  • Evita plugins duplicados que hacen lo mismo.
  • Actualiza plugins a versiones compatibles con tu version de Minecraft.
  • Revisa bases de datos pesadas, logs excesivos y plugins de proteccion con muchas consultas.

9.5 Controlar granjas

Las granjas de mobs, aldeanos, tolvas y redstone pueden afectar mucho el rendimiento.

Recomendacion: usar limites por zona o plugins como FarmLimiter o FarmControl si el servidor tiene muchos jugadores.


Configuracion recomendada resumida

Parametro Valor recomendado Motivo principal
simulation-distance 4 a 6 Reduce procesamiento de entidades, redstone y cultivos.
view-distance 6 a 8 Balance entre experiencia visual y rendimiento.
entity-broadcast-range-percentage 75 Reduce datos enviados a clientes.
mob-spawn-range 4 Evita spawns fuera de zonas simuladas.
nerf-spawner-mobs true Reduce IA de mobs de spawner.
hopper-transfer y hopper-check 8 Reduce chequeos de tolvas.
max-entity-collisions 2 Reduce carga por colisiones.
treasure-maps enabled false Evita picos por busqueda de estructuras.

Necesitas ayuda

Si tenes problemas o dudas, abri un ticket desde el panel de billing.baires.host o contactanos por soporte.

Tambien podes escribirnos por nuestras redes:

Hai trovato utile questa risposta? 2 Utenti hanno trovato utile questa risposta (2 Voti)