Cómo optimizar tu servidor Paper
Guía completa para optimizar el rendimiento de tu servidor Minecraft usando Paper y configuraciones recomendadas.
Tabla de contenidos
Introducción
Paper es uno de los forks de Spigot más populares por su rendimiento superior. Reemplaza por completo a Spigot — es un drop-in replacement que añade cientos de parches de rendimiento, configuraciones adicionales y APIs modernas. En esta guía recorreremos todos los ajustes esenciales para sacarle el máximo partido a tu servidor.
1. Configuración inicial de paper.yml
El archivo paper.yml se genera automáticamente al iniciar el servidor con Paper por primera vez. Aquí están los ajustes más importantes:
anticheat:
anti-xray:
enabled: true
engine-mode: 1
hidden-blocks:
- chest
- diamond_ore
- ancient_debris
- deepslate_diamond_ore
- emerald_ore
chunk-loading:
max-concurrent-sends: 2
target-chunks-per-tick: 350
enable-mc-cca: false
entities:
spawning:
despawn-ranges:
soft: 32
hard: 48
scoreboards:
save-scoreboard-on-world-unload: false
spawn:
keep-spawn-loaded: false
keep-spawn-loaded-range: 0
timings:
enabled: false
verbose: true
Explicación de cada ajuste:
anti-xray— Oculta menas del rayos X modificando los paquetes enviados al cliente. Engine-mode 1 usa parches en el terreno natural (más ligero), engine-mode 2 parchea todo tipo de piedra (más seguro pero con mayor uso de CPU).max-concurrent-sends— Limita cuántos chunks se envían simultáneamente a los jugadores. Reducirlo evita picos de lag al unirse jugadores.despawn-ranges— Las entidades se eliminan más cerca del jugador, reduciendo carga en zonas no visitadas.keep-spawn-loaded— Deshabilitar evita que el área de spawn se mantenga siempre cargada. Ahorra recursos significativos en servidores grandes.
2. Ajustes de spigot.yml
settings:
save-user-cache-on-stop-only: true
moved-too-quickly-multiplier: 10.0
moved-wrongly-threshold: 0.0625
bungeecord: false
player-shuffle: 20
world-settings:
default:
max-tnt-per-tick: 10
view-distance: 8
simulation-distance: 6
mob-spawner-tick-rate: 2
item-despawn-rate: 3000
arrow-despawn-rate: 600
merge-radius:
item: 3.5
exp: 4.0
nerf-spawner-mobs: false
enable-zombie-pigmen-portal-spawns: false
wither-spawn-sound-radius: 0
dragon-death-sound-radius: 0
hopper-transfer: 4
hopper-check: 4
hunger:
walk-exhaustion: 0.1
sprint-exhaustion: 0.3
combat-exhaustion: 0.1
regen-exhaustion: 6.0
max-entity-collisions: 2
seed-nether: ""
seed-end: ""
world: {}
world_nether: {}
world_the_end: {}
Ajustes clave explicados:
view-distance— La distancia en chunks que el servidor envía al jugador. 6-8 es óptimo para la mayoría de servidores. Valores mayores a 10 impactan fuertemente el rendimiento.simulation-distance— Distancia en la que el servidor procesa entidades y ticks. Debe ser menor o igual a view-distance. 5-6 es un buen balance.mob-spawner-tick-rate— Cada cuántos ticks los spawners intentan generar mobs. 2 = cada 2 ticks (1 segundo). Aumentarlo reduce spawn rate pero mejora rendimiento.merge-radius— Fusiona objetos y orbes de XP cercanos para reducir entidades. Valores más altos = menos entidades.hopper-transferyhopper-check— Intervalo en ticks entre transferencias y comprobaciones de hoppers. Valores más altos reducen carga de redstone.
3. server.properties
El archivo server.properties contiene ajustes fundamentales del servidor. Estos son los valores recomendados:
view-distance=8
simulation-distance=6
max-players=50
network-compression-threshold=256
max-world-size=5000
sync-chunk-writes=false
prevent-proxy-connections=false
entity-broadcast-range-percentage=100
player-idle-timeout=30
hardcore=false
spawn-npcs=false
spawn-animals=false
spawn-monsters=false
generate-structures=true
Opciones importantes:
network-compression-threshold— Comprime los paquetes enviados a los jugadores. 256 es un buen balance entre CPU y ancho de banda. Reducir a 128 en servidores con muchos jugadores.sync-chunk-writes— Si esfalse, los chunks se guardan de forma asíncrona sin bloquear el hilo principal. Gran mejora de rendimiento.max-world-size— Limita la generación del mundo. 5000 bloques = mundo de 10k x 10k, suficiente para la mayoría de servidores. Reduce espacio en disco y uso de memoria.entity-broadcast-range-percentage— Porcentaje del view-distance para enviar actualizaciones de entidades. Reducir mejora rendimiento en servidores con muchas entidades.
4. bukkit.yml
settings:
allow-end: true
warn-on-overload: true
permissions-file: permissions.yml
update-folder: update
plugin-profiling: false
connection-throttle: 4000
query-plugins: false
deprecated-verbose: default
shutdown-message: Servidor cerrado.
spawn-limits:
monsters: 50
animals: 10
water-animals: 5
water-ambient: 5
water-underground-creature: 5
axolotls: 5
ambient: 2
chunk-gc:
period-in-ticks: 400
load-threshold: 300
ticks-per:
animal-spawns: 400
monster-spawns: 200
water-spawns: 800
water-ambient-spawns: 800
water-underground-creature-spawns: 800
axolotl-spawns: 800
ambient-spawns: 800
auto-save: 6000
Detalle de opciones:
spawn-limits— Límite máximo de entidades por tipo por jugador. Reducir estos valores drásticamente mejora el rendimiento en servidores con muchos chunks cargados.chunk-gc.period-in-ticks— Cada cuántos ticks se ejecuta el recolector de chunks. 400 ticks = 20 segundos.chunk-gc.load-threshold— Si hay más chunks cargados que este número, el GC comenzará a limpiar. Ajusta según la RAM disponible.ticks-per.*— Intervalo entre intentos de spawn. Aumentar estos valores reduce la frecuencia con la que el servidor intenta generar mobs, ahorrando CPU.auto-save— Intervalo en ticks entre guardados automáticos del mundo. 6000 = 5 minutos. Valores muy altos pueden perder datos en un crash; valores muy bajos causan micro-lags frecuentes.
5. Flags de JVM recomendadas (Aikar’s Flags)
Estos flags son ampliamente conocidos como Aikar’s Flags, desarrollados por un miembro del equipo de Paper. Optimizan el garbage collector G1GC para servidores Minecraft:
java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 \
-XX:G1HeapWastePercent=5 -jar server.jar nogui
Explicación de cada flag:
| Flag | Función |
|---|---|
-Xms4G -Xmx4G | Memoria inicial y máxima iguales. Evita que la JVM solicite más memoria dinámicamente, reduciendo latencia. |
-XX:+UseG1GC | Activa el Garbage Collector G1, diseñado para heaps grandes con pausas predecibles. |
-XX:+ParallelRefProcEnabled | Procesa referencias suaves/débiles en paralelo. Acelera la limpieza de objetos no usados. |
-XX:MaxGCPauseMillis=200 | Objetivo de pausa máxima para el GC. Minecraft tolera hasta 200ms sin que se note lag. |
-XX:+DisableExplicitGC | Ignora llamadas System.gc() de plugins mal escritos. |
-XX:+AlwaysPreTouch | Reserva y toca toda la memoria en el inicio. Evita páginas no comprometidas durante el juego. |
-XX:+UnlockExperimentalVMOptions | Permite usar flags experimentales (necesario para algunos G1 flags). |
-XX:G1NewSizePercent=30 | Tamaño inicial de la generación joven (30% del heap). Importante porque Minecraft genera muchos objetos temporales. |
-XX:G1MaxNewSizePercent=40 | Tamaño máximo de la generación joven. |
-XX:G1HeapRegionSize=8M | Tamaño de cada región G1. 8M es óptimo para servidores con 4-12GB de RAM. |
-XX:SurvivorRatio=32 | Reduce el espacio del survivor space, dando más espacio a objetos jóvenes. |
-XX:MaxTenuringThreshold=1 | Los objetos pasan a old generation después de 1 ciclo de supervivencia. Acelera la recolección. |
-XX:G1ReservePercent=20 | Reserva 20% del heap para “promotion failures”. Reduce la probabilidad de Full GC. |
Ajuste de memoria según tu servidor:
| RAM disponible | Flags recomendados |
|---|---|
| 2 GB | -Xms1G -Xmx1G -XX:G1HeapRegionSize=4M -XX:G1NewSizePercent=40 |
| 4 GB | -Xms4G -Xmx4G (flags estándar) |
| 8 GB | -Xms8G -Xmx8G -XX:G1HeapRegionSize=16M |
| 12 GB | -Xms10G -Xmx10G -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=25 |
| 16 GB+ | -Xms12G -Xmx12G -XX:G1HeapRegionSize=32M -XX:G1NewSizePercent=25 |
6. Plugins recomendados para rendimiento
| Plugin | Función | Impacto |
|---|---|---|
| Spark | Perfilador de CPU, memoria y TPS. Indispensable para diagnosticar problemas. | Bajo |
| Olympus | Limpieza programada de entidades, chunks y mobs. | Alto |
| FarmLimiter | Limita mobs por chunk. Excelente para servidores survival. | Alto |
| Performant | Optimizaciones generales: activación de entidades, redstone, físicas. | Alto |
| PacketLimiter | Limita paquetes por jugador. Previene lag inducido por clientes maliciosos. | Medio |
| ClearLag | Elimina ítems caídos y mobs excesivos periódicamente. | Alto |
| Chunky | Pre-genera chunks del mundo en segundo plano. | Medio (uso único) |
| Lithium | Optimizaciones de vanilla para el servidor (compatible con Paper). | Medio |
7. Monitoreo y diagnóstico
Mantener el servidor saludable requiere monitoreo constante. Aquí las herramientas clave:
Spark (recomendado)
Spark es el perfilador estándar en la comunidad Paper. Permite identificar exactamente qué está consumiendo CPU o memoria:
/spark profiler start — Inicia un perfilado de CPU de 30 segundos
/spark profiler stop — Detiene y genera un enlace con resultados
/spark heapdump — Genera un dump de memoria para analizar
/spark tps — Muestra TPS actual, promedio y MSPT
Interpretar TPS y MSPT
TPS actual: 20.0
TPS promedio (1m): 19.8
TPS promedio (5m): 19.5
MSPT: 28.5
- TPS (Ticks Per Second): El servidor Minecraft debería ejecutar 20 ticks por segundo. Por debajo de 19.0 empieza a notarse lag.
- MSPT (Milliseconds Per Tick): Cuánto tiempo toma cada tick. Idealmente < 30ms. Entre 30-40ms es aceptable. > 50ms causa lag notable.
| MSPT | Estado |
|---|---|
| < 30 | Excelente |
| 30-40 | Bueno |
| 40-50 | Aceptable |
| > 50 | Lag notable — requiere acción |
Comandos útiles
/tps — Muestra TPS actual
/gc — Información del garbage collector
/spark health — Resumen rápido de salud del servidor
/paper debug — Información de depuración de Paper
/memory — Uso de memoria
8. Optimización del mundo
Pre-generación de chunks con Chunky
La generación de chunks bajo demanda (cuando un jugador explora) causa pausas en el hilo principal. Pre-generar el mundo resuelve esto:
/chunky world world — Selecciona el mundo
/chunky shape square — Forma cuadrada
/chunky radius 500 — Radio de 500 chunks (8km x 8km)
/chunky start — Inicia la pre-generación
/chunky pause — Pausa
/chunky cancel — Cancela
/chunky progress — Muestra el progreso
Entity Activation Range
Controla a qué distancia las entidades se activan/desactivan:
entities:
activation-range:
animals: 16
monsters: 24
raiders: 32
misc: 8
water: 12
villagers: 16
flying-monsters: 32
Valores más bajos = menos entidades procesadas = mejor rendimiento.
VAC (View-distance Auto Config)
Paper 1.19.3+ incluye VAC que ajusta dinámicamente el view-distance según el rendimiento:
viewdistances:
no-tick-view-distance: 3
Esto separa la distancia a la que los chunks hacen tick versus la distancia visual. Los chunks entre simulation-distance y view-distance se muestran pero no procesan entidades.
9. Resolución de problemas comunes
Lag spikes cada pocos segundos
Causa probable: Auto-save muy frecuente o GC intensivo.
Solución:
- Aumenta
auto-saveen bukkit.yml a 12000 (10 minutos) - Verifica que
-XX:+DisableExplicitGCesté activo - Monitorea con
/spark healthpara ver si el GC es el culpable
TPS bajo constante
Causa probable: Demasiadas entidades, redstone activa o plugins ineficientes.
Solución:
- Usa
/spark profiler startpara identificar el culpable - Reduce
spawn-limitsen bukkit.yml - Instala FarmLimiter u Olympus para control de entidades
- Revisa granjas de redstone: limita
max-tnt-per-tickyhopper-transfer
Memory leak (la RAM sube sin parar)
Causa probable: Plugin con fugas de memoria, configuraciones incorrectas o mundo corrupto.
Solución:
- Ejecuta
/spark heapdumpy analiza con Eclipse MAT - Deshabilita plugins uno por uno para identificar el culpable
- Aumenta
-XX:G1ReservePercenta 25 para dar margen al GC - Programa reinicios automáticos del servidor cada 12-24h
Chunks que no cargan (ghost chunks)
Causa probable: Corrupción de región files o plugins que mantienen chunks cargados.
Solución:
- Usa
/paper chunkdebugpara listar chunks cargados - Identifica qué plugin fuerza la carga con
/spark chunks - Ejecuta
/paper entity listpara detectar entidades en chunks fantasma
Conclusión
La optimización de un servidor Minecraft es un proceso continuo. No existe una configuración mágica que funcione para todos los servidores; cada servidor tiene necesidades distintas según su modo de juego, número de jugadores y plugins instalados.
Checklist final para tu servidor:
- Paper actualizado a la última versión estable
- Aikar’s Flags configuradas en el script de inicio
-
paper.ymlcon anti-xray y chunk-loading optimizados -
spigot.ymlcon view-distance 6-8 y simulation-distance 5-6 -
bukkit.ymlcon spawn-limits reducidos y chunk-gc activo - Spark instalado para monitoreo
- Pre-generación de chunks completada
- Plugins de rendimiento instalados y configurados
- Pruebas de carga realizadas antes de abrir al público
Recuerda probar cada cambio en un entorno de pruebas antes de aplicarlo en producción. Mide siempre el impacto con Spark antes y después de cada ajuste.
Revers Studio
1 de junio de 2026
Guías relacionadas
Configurar un proxy Velocity para tu red de servidores
Guía completa para instalar y configurar Velocity como proxy, conectar servidores backend, configurar forwarding y resolver problemas comunes.
ServidoresGestión de mundos en Minecraft
Aprende a gestionar múltiples mundos, pre-generar terreno, controlar bordes y optimizar el Nether y el End en tu servidor.
ServidoresSeguridad y protección para servidores Minecraft
Guía completa para proteger tu servidor Minecraft contra ataques, griefing, exploits y accesos no autorizados. Firewall, anti-cheat, backups y más.