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: 20para reducir carga de mobs hostiles.animals: 5para evitar exceso de animales pasivos.water-animals: 2para reducir entidades acuaticas pesadas.water-ambient: 2para reducir peces y ambiente acuatico.ambient: 1para 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: 16reduce la IA de animales lejanos.monsters: 24mantiene mobs hostiles activos a una distancia razonable.raiders: 48evita problemas con raids, manteniendolas activas a mas distancia.misc: 8reduce carga de entidades varias.water: 8baja carga de mobs acuaticos.villagers: 16reduce carga de aldeanos, que suelen ser pesados.flying-monsters: 48mantiene mobs voladores funcionales a mas distancia.tick-inactive-villagers: falseevita 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-transferdefine cada cuantos ticks una tolva transfiere items.hopper-checkdefine 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:
-Xmsdefine la memoria inicial asignada a Java.-Xmxdefine 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=30y-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:
- Instagram: @baires_host
- Discord, soporte activo: https://discord.gg/dzjauatAFN
- Linktree: https://linktr.ee/baires.host