Skip to content
Volver al Blog
Folia: Multithreading Regionalizado para tu Servidor

Folia: Multithreading Regionalizado para tu Servidor

ice
ice
@ice
Updated
2 vistas
TL;DR:Folia es un fork multithreaded de Paper que permite que servidores grandes de Minecraft distribuyan el trabajo entre núcleos de CPU. Está construido para comunidades de 200+ jugadores donde los jugadores están dispersos por el mundo, ofreciendo ganancias reales de rendimiento al costo de la compatibilidad de plugins.
<! - gh-polish-start - >
GitHub · Proyecto de la comunidad Minecraft

Folia (PaperMC/Folia)

Fork de Paper que añade multiejecución regionalizada al servidor dedicado.

Marcar en GitHub ↗
⭐ 4.228 estrellas💻 Shell📄 GPL-3.0
<! - gh-polish-end - >

Si ejecutas un servidor Minecraft grande y ves que tu TPS cae cuando alguien explora nuevos chunks o durante las horas pico, Folia podría ser la respuesta que buscabas. Este fork basado en Paper reimagina completamente cómo los servidores Minecraft manejan la computación dividiendo el mundo en regiones independientes, cada una ejecutándose en su propio thread. En lugar de un thread principal luchando por mantenerse al día con todo a la vez, Folia permite que tus núcleos de CPU realmente realicen trabajo en paralelo.

Qué es Folia

Folia no es un mod. No es un plugin. Es una reescritura desde cero del servidor Paper que elimina completamente el concepto de un thread principal. En su lugar, los chunks cercanos se agrupan en "regiones", y cada región ejecuta su propio loop de tick en el pool de threads. Piénsalo como dar a diferentes partes de tu mundo su propio procesador independiente en lugar de forzar que un thread controle todo.

La arquitectura importa porque cambia cómo escala tu servidor.

Paper maneja servidores con millones de jugadores bien dentro de su diseño de un solo thread, pero una vez que llegas al siguiente nivel de escala (cientos de jugadores dispersos en un mundo enorme), emergen cuellos de botella. Folia no intenta exprimir más de un single thread. En su lugar, cambia fundamentalmente el problema.


Por Qué Querrías Esto

Los servidores grandes y dispersos se benefician más. Las redes Skyblock donde los jugadores tienen islas flotantes dispersas en dimensiones, mundos de supervivencia masivos, servidores RPG personalizados con mazmorras distribuidas, estos son donde Folia brilla. Si tus jugadores se agrupan en un área de spawn, no verás las mismas mejoras de rendimiento. Pero para un SMP de 200+ jugadores donde la gente explora en diferentes cuadrantes, la diferencia es sustancial.

Debo mencionarlo claramente: esto no es un reemplazo directo.

Tus plugins necesitan ser reescritos para el entorno multithreaded de Folia. Ese es el costo real. Pero si estás en la escala donde lo consideras, tu ecosistema de plugins probablemente es personalizado de todas formas. Los plugins estándar de Paper que no asumen un thread principal se romperán inmediatamente bajo Folia.

Pero la recompensa es genuina. Con la configuración adecuada, estás viendo mejoras de rendimiento reales que escalan con el número de núcleos de tu CPU. Eso no es alcanzable en Paper estándar.


Instalación y Configuración Básica

Primero, obtén la compilación más reciente de la página de descargas de PaperMC. A partir de 2026, Folia soporta versiones modernas de Minecraft (1.20.4 y posteriores). Descarga el archivo jar a tu directorio del servidor:

<! - gh-code-start - >
bash
wget https://api.papermc.io/v2/projects/folia/versions/latest/builds/latest/downloads/folia-latest.jar
mv folia-latest.jar folia.jar
<! - gh-code-end - >

A continuación, necesitas aceptar el EULA en tu archivo eula.txt. Inicia el servidor una vez para generar tus archivos de configuración:

<! - gh-code-start - >
bash
java -Xmx30G -Xms30G -jar folia.jar nogui
<! - gh-code-end - >

Deténlo (creará la configuración de folia.yml), luego entras en el trabajo real: configuración de threads. Esto no es solo "establecer más threads e ir". La documentación de PaperMC recomienda pre-generar tu mundo antes de pasar a producción, lo que reduce significativamente la sobrecarga de carga de chunks.


Configuración de Threads: El Reto Real

Aquí es donde la mayoría de la gente se confunde. Tu archivo folia.yml tiene una configuración `threaded-regions.threads`. No solo la maximices. La guía del proyecto mismo: asigna threads para netty IO (aproximadamente 4 por 200-300 jugadores), threads de IO del sistema de chunks (aproximadamente 3 por 200-300 jugadores), workers del sistema de chunks si está pre-generado (aproximadamente 2 por 200-300 jugadores), y luego usa los núcleos restantes hasta el 80% de asignación total para tick threads.

En una máquina con 32 núcleos sirviendo 500 jugadores, asignarías aproximadamente:

  • Netty IO: 8 threads
  • Chunk system IO: 6 threads
  • Chunk system workers: 4 threads
  • Tick threads: núcleos restantes hasta el 80% (aproximadamente 10 threads)

No dejas una asignación del 100% porque los plugins y las tareas de fondo inesperadas generarán sus propios threads y bloquearán el servidor. El techo del 80% es un límite de seguridad que realmente importa.

Incluso entonces, este es un punto de partida. Monitorea tu uso real de threads bajo carga y ajusta. El archivo folia.yml tiene comentarios detallados para cada opción.


Características Clave que Funcionan

Aislamiento de regiones. Cada región hace tick independientemente a 20 TPS. Un pico de lag en una región no se propaga a las otras. Si tu sistema de mazmorra está mal optimizado, no afectará el rendimiento de tu área de spawn.

Escalado de threads adecuado. A diferencia del enfoque de plugin-threadpool de Paper (que sigue teniendo cuellos de botella en operaciones críticas de tick), las regiones de Folia ejecutan lógica de tick en paralelo. Más núcleos realmente se traduce en más procesamiento de tick. El escalado no es lineal, pero es real.

Carga asincrónica de chunks. La I/O de chunks ocurre fuera de los threads de región. No obtendrás los bloqueos aleatorios que los servidores de single-threaded experimentan cuando los reads de almacenamiento se disparan.

También hay soporte nativo para optimización de chunks del lado del servidor, almacenamiento en caché de chunks pre-generados, y límites de memoria configurables por región. Honestamente, la profundidad de características es impresionante si estás dispuesto a profundizar en la documentación.


Qué Se Romperá y Cómo Manejarlo

La mayoría de los plugins asumen que están en un thread principal y que pueden leer/escribir el estado del mundo de forma segura sin sincronización. Se equivocan en Folia. Si un plugin hace algo como "verificar si el bloque X es piedra, luego establecerlo en aire", esa condición de carrera podría ocurrir entre threads de una forma que nunca ocurriría en Paper. Espera fallos de plugins.

Algunos detalles específicos:

  • La teleportación entre regiones implica complejidad adicional y puede causar deadlocks si los plugins no son cuidadosos
  • Las verificaciones de los límites del mundo tienen en cuenta regiones y podrían comportarse diferente de lo que esperas
  • Los temporizadores y tareas programadas deben ser region-safe para evitar corrupción
  • El seguimiento de entidades entre límites de región requiere actualizaciones de plugins

La documentación de Folia enumera patrones incompatibles explícitamente. Si estás evaluando plugins para compatibilidad, verifica si manipulan directamente la lógica de tick o asumen acceso single-threaded a datos de chunks.


Cuándo Tiene Sentido Folia

Tienes una máquina de 16+ núcleos. Tu servidor va a alcanzar 200+ jugadores concurrentes regularmente. Tus jugadores están geográficamente dispersos (no todos en spawn). Tienes infraestructura de plugins personalizada o estás dispuesto a portar plugins existentes.

¿Esas cuatro condiciones? Eres candidato.

¿Estás ejecutando 50 jugadores en un VPS con 8 núcleos? Mantente con Paper. Las ganancias no justificarán el dolor de cabeza de compatibilidad. ¿Estás ejecutando un SMP de 100 jugadores donde todos se reúnen en spawn? Folia ayuda, pero no tan dramáticamente como lo haría en un servidor disperso.

Pero si estás construyendo la próxima generación de comunidades serias de Minecraft multijugador, Folia es donde el techo de rendimiento realmente es más alto. Los jugadores con skins como el de adderall_abuser, ironmouse, y otros miembros activos de la comunidad en servidores masivos ya están explorando este espacio. Revisa comunidades de streaming y proyectos grandes de supervivencia en Modrinth, verás que Folia aparece más frecuentemente.


Alternativas que Vale la Pena Considerar

Paper. Sigue siendo el estándar de oro para la mayoría de los servidores. Estable, bien entendido, ecosistema de plugins enorme. Si Folia se siente como exceso, las características de optimización de Paper (carga asincrónica de chunks, ticks de AI de entidades reducidos, etc.) podrían ser suficientes.

Purpur. Un fork de Paper con optimizaciones adicionales por jugador. Mejor para servidores donde la experiencia del jugador varía mucho (algunos AFK, algunos explorando activamente). Menos cambio de arquitectura que Folia, ganancias de rendimiento más específicas.

Fabric Server. Si necesitas soporte de mods (no plugins), el ecosistema de Fabric es bastante sólido para servidores ahora. No multithreaded de la misma forma, pero ligero y rápido.

La verdad honesta: Folia es especializado. Es para un problema específico en una escala específica. Para todos los demás, Paper con configuración cuidadosa sigue siendo la opción correcta.

<! - gh-polish-start - > <! - gh-polish-end - >