Saltar al contenido principal
Volver a guías
Servidores 1 de junio de 2026 · 10 min de lectura Destacado

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-transfer y hopper-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 es false, 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:

FlagFunción
-Xms4G -Xmx4GMemoria inicial y máxima iguales. Evita que la JVM solicite más memoria dinámicamente, reduciendo latencia.
-XX:+UseG1GCActiva el Garbage Collector G1, diseñado para heaps grandes con pausas predecibles.
-XX:+ParallelRefProcEnabledProcesa referencias suaves/débiles en paralelo. Acelera la limpieza de objetos no usados.
-XX:MaxGCPauseMillis=200Objetivo de pausa máxima para el GC. Minecraft tolera hasta 200ms sin que se note lag.
-XX:+DisableExplicitGCIgnora llamadas System.gc() de plugins mal escritos.
-XX:+AlwaysPreTouchReserva y toca toda la memoria en el inicio. Evita páginas no comprometidas durante el juego.
-XX:+UnlockExperimentalVMOptionsPermite usar flags experimentales (necesario para algunos G1 flags).
-XX:G1NewSizePercent=30Tamaño inicial de la generación joven (30% del heap). Importante porque Minecraft genera muchos objetos temporales.
-XX:G1MaxNewSizePercent=40Tamaño máximo de la generación joven.
-XX:G1HeapRegionSize=8MTamaño de cada región G1. 8M es óptimo para servidores con 4-12GB de RAM.
-XX:SurvivorRatio=32Reduce el espacio del survivor space, dando más espacio a objetos jóvenes.
-XX:MaxTenuringThreshold=1Los objetos pasan a old generation después de 1 ciclo de supervivencia. Acelera la recolección.
-XX:G1ReservePercent=20Reserva 20% del heap para “promotion failures”. Reduce la probabilidad de Full GC.

Ajuste de memoria según tu servidor:

RAM disponibleFlags 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

PluginFunciónImpacto
SparkPerfilador de CPU, memoria y TPS. Indispensable para diagnosticar problemas.Bajo
OlympusLimpieza programada de entidades, chunks y mobs.Alto
FarmLimiterLimita mobs por chunk. Excelente para servidores survival.Alto
PerformantOptimizaciones generales: activación de entidades, redstone, físicas.Alto
PacketLimiterLimita paquetes por jugador. Previene lag inducido por clientes maliciosos.Medio
ClearLagElimina ítems caídos y mobs excesivos periódicamente.Alto
ChunkyPre-genera chunks del mundo en segundo plano.Medio (uso único)
LithiumOptimizaciones 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.
MSPTEstado
< 30Excelente
30-40Bueno
40-50Aceptable
> 50Lag 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-save en bukkit.yml a 12000 (10 minutos)
  • Verifica que -XX:+DisableExplicitGC esté activo
  • Monitorea con /spark health para ver si el GC es el culpable

TPS bajo constante

Causa probable: Demasiadas entidades, redstone activa o plugins ineficientes.

Solución:

  1. Usa /spark profiler start para identificar el culpable
  2. Reduce spawn-limits en bukkit.yml
  3. Instala FarmLimiter u Olympus para control de entidades
  4. Revisa granjas de redstone: limita max-tnt-per-tick y hopper-transfer

Memory leak (la RAM sube sin parar)

Causa probable: Plugin con fugas de memoria, configuraciones incorrectas o mundo corrupto.

Solución:

  1. Ejecuta /spark heapdump y analiza con Eclipse MAT
  2. Deshabilita plugins uno por uno para identificar el culpable
  3. Aumenta -XX:G1ReservePercent a 25 para dar margen al GC
  4. 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:

  1. Usa /paper chunkdebug para listar chunks cargados
  2. Identifica qué plugin fuerza la carga con /spark chunks
  3. Ejecuta /paper entity list para 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.yml con anti-xray y chunk-loading optimizados
  • spigot.yml con view-distance 6-8 y simulation-distance 5-6
  • bukkit.yml con 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.

RS

Revers Studio

1 de junio de 2026