Reinicios inesperados
Un servidor que se cae o se reinicia solo es uno de los problemas más frustrantes. Esta guía te ayuda a identificar la causa y solucionarla.
Paso 1 — Leer los logs
El primer paso siempre es leer los logs. En SkyPanel:
- Ve a Console y mira los últimos mensajes antes del reinicio
- O abre Files → logs → latest.log
- Busca al final del archivo — el error que causó el cierre estará justo antes del mensaje de apagado
Palabras clave a buscar:
ERROR
FATAL
Exception
OutOfMemoryError
Killed
Watchdog
Paso 2 — Revisar el crash report
Si el servidor generó un crash report, lo encontrarás en:
crash-reports/crash-YYYY-MM-DD_HH.MM.SS-server.txt
El crash report tiene esta estructura:
---- Minecraft Crash Report ----
Time: 2024-01-15 14:30:00
Description: Exception in server tick loop
java.lang.NullPointerException: ...
at com.pluginX.ClaseY.metodoZ(ClaseY.java:45)
at ...
-- System Details --
Minecraft Version: 1.21.1
Java Version: 21.0.1, ...
Memory: 2GB / 6GB
La línea más importante es la que describe la excepción (java.lang.NullPointerException, OutOfMemoryError, etc.) y el stack trace que la sigue.
Causa: OutOfMemoryError
Síntoma en logs
java.lang.OutOfMemoryError: Java heap space
o
java.lang.OutOfMemoryError: GC overhead limit exceeded
Qué significa
El servidor se quedó sin memoria RAM asignada. La JVM no pudo continuar y mató el proceso.
Soluciones
1. Aumentar la RAM asignada
En SkyPanel → Startup, aumenta el valor de -Xmx. Si tu plan tiene 8 GB, prueba con -Xms6G -Xmx6G.
2. Buscar fugas de memoria (memory leaks)
Si el servidor funciona bien durante horas y luego cae, probablemente hay un plugin con una fuga de memoria. Para identificarlo:
-
Instala el plugin Spark si no lo tienes
-
Ejecuta periódicamente
/spark heapsummary -
Spark mostrará qué clases están acumulando más memoria — busca las que crecen sin parar
-
Desactiva plugins uno por uno hasta que el servidor deje de caer. El último que desactivaste es el culpable.
3. Revisar la configuración de JVM
Asegúrate de que -Xms es igual a -Xmx. Si -Xms es mucho menor, la JVM puede tener problemas al expandir el heap y causar GC overhead.
Consulta la guía de Flags de Aikar para la configuración óptima.
Causa: Watchdog Thread Crash
Síntoma en logs
[WARN] A single server tick took 60.00 seconds (should be max 0.05)
[FATAL] The server has stopped responding! This is a crash report.
Qué significa
El servidor estuvo demasiado tiempo sin poder procesar un tick (por lag severo o un bucle infinito en un plugin). El Watchdog de Paper/Spigot detecta esto y mata el proceso para evitar que quede "colgado" de forma indefinida.
Soluciones
1. Identificar el cuello de botella
Instala Spark y ejecuta un perfil justo antes o durante el lag:
/spark profiler start
Espera a que el servidor se congele y (si puedes) para el profiler:
/spark profiler stop
El informe mostrará qué método o plugin está bloqueando el tick principal.
2. Causas comunes de Watchdog
| Causa | Indicación en logs | Solución |
|---|---|---|
| Plugin con bucle infinito | Mismo método repetido en el stack trace | Actualizar o desinstalar el plugin |
| Demasiadas entidades | Entity Tick al tope del profiler | Reducir mobs, usar ClearLag |
| I/O de disco lento | ChunkSave o ChunkLoad al tope | Pregenerar mapa, verificar almacenamiento |
| Redstone masiva | BlockTick al tope | Revisar granjas de redstone |
| Operación de base de datos síncrona | Llamadas MySQL en el tick principal | Actualizar el plugin a versión async |
3. Aumentar el umbral del Watchdog (solución temporal)
En paper-global.yml:
# Tiempo en segundos antes de que Watchdog mate el servidor
# Default: 60. Aumentar da más margen pero puede dejar el servidor colgado más tiempo.
watchdog:
early-warning-every: 5000
early-warning-delay: 10000
Aumentar el timeout del Watchdog no soluciona el problema de raíz — solo retrasa el crash. Úsalo solo como medida temporal mientras investigas.
Causa: Plugin causando un crash
Síntoma en logs
[SEVERE] Could not pass event ... to PluginX v1.2.3
java.lang.NullPointerException
at com.pluginx.ClaseX.metodo(ClaseX.java:123)
o el servidor se cierra sin mensaje con el nombre del plugin en el stack trace.
Cómo identificar el plugin problemático
Método rápido: mira el stack trace en el crash report. El nombre del paquete suele indicar el plugin (ej: com.sk89q.worldedit → WorldEdit, me.clip.placeholderapi → PlaceholderAPI).
Método sistemático:
- Para el servidor
- Ve a Files → plugins
- Renombra el
.jarde un plugin a.jar.disabled(empieza por los más recientes o sospechosos) - Arranca el servidor
- Si no cae, ese plugin era el problema
- Repite con el siguiente si el servidor sigue cayendo
Soluciones
- Actualizar el plugin: muchos crashes se solucionan con la última versión
- Desinstalar el plugin: si no hay actualización o el plugin está abandonado
- Reportar al autor: si el bug es reproducible, el autor del plugin puede arreglarlo
- Buscar un fork o alternativa: si el plugin no tiene mantenimiento activo
Causa: Script de reinicio automático
Síntoma
El servidor "se reinicia" regularmente sin error aparente.
Qué significa
Pterodactyl / SkyPanel puede estar configurado para reiniciar el servidor si detecta que no responde o si el proceso termina. Esto se combina con los Schedules de SkyPanel.
Verificar
- Ve a Schedules en tu servidor — comprueba si hay algún schedule configurado con un reinicio (
restart) - Ve a Settings — verifica la configuración de "Crash Detection" si está disponible
Si el servidor se reinicia sin error en los logs, probablemente el proceso de Java terminó limpiamente (por una llamada a /stop del Watchdog o un Schedule) y SkyPanel lo reinició automáticamente.
Causa: OOM del sistema operativo (OOM Killer)
Síntoma
El servidor desaparece sin ningún mensaje de error en los logs. El log se corta abruptamente.
Qué significa
El kernel de Linux mató el proceso de Java porque el sistema se quedó sin memoria RAM (no el heap de Java, sino la RAM total del nodo). Esto es más raro en MixelNodes porque los recursos están aislados por contenedor, pero puede ocurrir.
Diagnóstico
Si tienes acceso a los logs del nodo (contacta con soporte), busca:
kernel: Out of memory: Killed process XXXX (java)
Solución
Contacta con el soporte de MixelNodes. Pueden:
- Verificar si hay un problema en el nodo
- Ajustar los límites de memoria del contenedor
- Migrar tu servidor a un nodo con más recursos disponibles
Checklist de diagnóstico de reinicios
Cuando el servidor cae, verifica en orden:
- ¿Hay un archivo en
crash-reports/? → Léelo - ¿El log muestra
OutOfMemoryError? → Aumentar RAM o buscar memory leak - ¿El log muestra
Watchdog? → Usar Spark para encontrar el cuello de botella - ¿El log muestra el nombre de un plugin en el error? → Actualizar o desinstalar ese plugin
- ¿El log se corta sin error? → Contactar con soporte (posible OOM del sistema)
- ¿El servidor se reinicia regularmente sin error? → Revisar Schedules en SkyPanel
Herramientas recomendadas
| Herramienta | Uso | Enlace |
|---|---|---|
| Spark | Profiling y diagnóstico de rendimiento | spark.lucko.me |
| mclo.gs | Subir logs para compartir con soporte | mclo.gs |
| timings.aikar.co | Análisis de timings de Paper | timings.aikar.co |
Contactar con soporte
Si no puedes identificar la causa:
- Sube el log completo a mclo.gs
- Copia el crash report si existe
- Ve al Discord de MixelNodes y abre un ticket con:
- El enlace de mclo.gs
- El crash report
- Qué plugins tienes instalados
- Qué estaba pasando cuando cayó (muchos jugadores, alguien usó una granja, etc.)