Saltar al contenido principal

Optimización de recursos

Esta guía cubre las técnicas más efectivas para maximizar el rendimiento de tu servidor Minecraft en MixelNodes. Está orientada a servidores que ya tienen jugadores y quieren mejorar los TPS (ticks por segundo) y reducir el lag.

TPS objetivo

Un servidor sano debe mantener 20 TPS estables. Por debajo de 15 TPS los jugadores empezarán a notar lag significativo. Por debajo de 10 TPS el servidor es prácticamente injugable.


1. Selección del software de servidor

El software que uses tiene el mayor impacto en el rendimiento:

SoftwareBaseRendimientoPluginsMods
VanillaMojangBajo
SpigotBukkitMedio
PaperSpigotAlto
PurpurPaperAlto+
Fabric + LithiumFabricAlto
Forge + PerformantForgeMedio

Recomendación: Para servidores de plugins, usa Paper o Purpur. Para servidores de mods, usa Fabric con Lithium + Starlight.


2. Flags de Java (JVM)

Las flags de arranque de la JVM son el segundo factor más importante. Usa las Flags de Aikar como base — son el estándar de la industria para servidores Minecraft.

Consulta la guía completa: Flags de Aikar

Resumen rápido para configurarlas en SkyPanel:

  1. Ve a Startup en tu servidor
  2. Busca el campo de Java Flags o JVM Flags
  3. Pega las flags (ver guía de Aikar)
  4. Guarda y reinicia

3. Asignación de RAM

¿Cuánta RAM necesito?

JugadoresPluginsRAM recomendada
1-10Pocos (<10)2 GB
10-30Moderados (10-30)4 GB
30-60Muchos (30+)6-8 GB
60-100Muchos10-12 GB
100+Muchos16 GB+

Regla de oro

No asignes toda la RAM del plan al heap de Java. El sistema operativo y el proceso Wings también necesitan memoria. Deja siempre un 10-15% libre.

Ejemplo para un plan de 8 GB:

  • -Xms6G -Xmx6G — correcto
  • -Xms8G -Xmx8G — incorrecto (puede causar OOM)
Xms = Xmx

Configura siempre -Xms igual a -Xmx. Esto evita que la JVM esté constantemente redimensionando el heap, lo que genera pausas de GC innecesarias.


4. Configuración de Paper

paper-global.yml

# Usa async chunk loading/saving (muy importante)
chunk-loading-basic:
autoconfig-send-distance: true

# Limitar el número de chunks que se cargan a la vez
chunk-loading-advanced:
player-max-concurrent-loads: 4.0
server-max-concurrent-loads: 4.0

# Desactiva el anti-xray si no lo necesitas (consume mucho CPU)
anticheat:
anti-xray:
enabled: false

paper-world-defaults.yml

entities:
spawning:
# Desactiva spawners vanilla en zonas con spawners de plugins
duplicate-uuid:
mode: SAFE_REGEN

chunks:
# Tiempo antes de que un chunk inactivo se descargue (en ticks, 20t = 1s)
# Reducir esto libera memoria en servidores con mucha exploración
auto-save-interval: 6000

environment:
# Reduce el delay de los relámpagos (impacto mínimo en rendimiento)
optimize-explosions: true

misc:
# Distancia a la que los items del suelo se apilan automáticamente
# Reduce el número de entidades
redstone-implementation: ALTERNATE_CURRENT

5. Configuración de spigot.yml

world-settings:
default:
# Reducir el rango de activación de entidades alivia mucho el CPU
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 32

# Reduce la frecuencia de "pensar" de entidades inactivas
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64

# Frecuencia de tick de entidades lejanas (1 = cada tick, 4 = cada 4 ticks)
tick-inactive-villagers: false

# Cuántos chunks se cargan por tick al generarse terreno nuevo
# Reducir evita picos de lag cuando los jugadores exploran
max-bulk-chunks: 10

# Fusiona items cercanos en el suelo (menos entidades)
merge-radius:
item: 3.5
exp: 6.0

6. Vista y distancia de simulación

En server.properties:

# Chunks que se envían a cada cliente (visual)
view-distance=8

# Chunks donde se simulan entidades y redstone
simulation-distance=6
Jugadores simultáneosview-distancesimulation-distance
1-20108
20-5086
50-10065
100+54
No bajes demasiado

Con view-distance menor que 5, el mundo se verá muy recortado y los jugadores tendrán peor experiencia. simulation-distance menor que 4 puede romper mecánicas de redstone y farms.


7. Límites de spawn de mobs

En bukkit.yml:

spawn-limits:
monsters: 50 # default: 70
animals: 8 # default: 10
water-animals: 3 # default: 5
water-ambient: 10 # default: 20
ambient: 5 # default: 15

Reducir estos valores es una de las formas más efectivas de bajar el uso de CPU sin afectar la jugabilidad perceptiblemente.


8. Plugins de optimización recomendados

PluginFunciónDescarga
SparkProfiler de rendimiento. Imprescindible para diagnosticar lag.spark.lucko.me
ClearLagLimpia entidades y items del suelo periódicamenteSpigot
FarmControlLimita automáticamente el tamaño de granjasSpigot
EntityCleanerElimina entidades duplicadas o stuckSpigot

Usar Spark para diagnosticar lag

# En la consola o como OP en el juego:
/spark profiler start
# espera 1-2 minutos de lag
/spark profiler stop

Spark te dará un enlace con un informe detallado de qué está consumiendo más CPU.


9. Pregenerar el mapa

Una de las causas más comunes de lag es la generación de chunks en tiempo real cuando los jugadores exploran. Pregenerar el mapa elimina este problema.

Con el plugin Chunky (recomendado):

# En la consola:
/chunky radius 5000
/chunky start

Esto pregenerará un área de 5000 bloques de radio alrededor del spawn. Dependiendo del hardware, puede tardar varios minutos — es normal que el servidor tenga algo de lag durante la pregeneración.

Hazlo antes de abrir el servidor

Lo ideal es pregenerar el mapa antes de que los jugadores empiecen a explorar, cuando el servidor está vacío.


10. Monitorización continua

Comandos útiles en consola

# Ver TPS actual
/tps

# Ver uso de memoria
/memory

# Ver entidades totales por mundo
/paper entity

Señales de alerta

SíntomaCausa probableSolución
TPS < 18 constanteDemasiadas entidades o chunksReducir spawn limits, view-distance
Picos de lag al explorarGeneración de chunksPregenerar el mapa
Lag al activar redstoneCircuitos ineficientesRevisar las granjas, usar ALTERNATE_CURRENT
Lag con muchos jugadoresRAM insuficienteAumentar el plan o reducir plugins
GC pauses frecuentesMal configuración de JVMRevisar flags de Aikar