Skip to content
Вернуться в блог
Folia - регионализация многопоточности на серверах

Folia - регионализация многопоточности на серверах

ice
ice
@ice
Updated
1 просмотров
TL;DR:Folia - это многопоточная версия Paper, которая позволяет крупным серверам Minecraft распределять нагрузку между ядрами процессора. Создана для сообществ с 200+ игроками, разбросанными по всему миру, обеспечивая реальный прирост производительности ценой совместимости плагинов.
<! - gh-polish-start - >
GitHub - проект сообщества Minecraft

Folia (PaperMC/Folia)

Версия Paper, добавляющая региональную многопоточность к серверу.

Добавить в звёзды на GitHub ↗
⭐ 4 228 звёзд💻 Shell📄 GPL-3.0
<! - gh-polish-end - >

Если вы управляете крупным сервером Minecraft и видите, как падает TPS при исследовании новых чанков или при достижении пиковых часов, Folia может быть именно тем ответом, который вы ищите. Эта основанная на Paper версия полностью переосмысляет, как серверы Minecraft обрабатывают вычисления, разделяя мир на независимые регионы, каждый работающий в отдельном потоке. Вместо того чтобы один основной поток пытался справиться со всем сразу, Folia позволяет вашим ядрам процессора действительно работать параллельно.

Что такое Folia

Folia - это не мод. И не плагин. Это полностью переписанный Paper сервер, который убирает концепцию основного потока. Вместо этого близлежащие чанки группируются в "регионы", и каждый регион запускает свой цикл тика в пуле потоков. Думайте об этом как о том, что разные части вашего мира получают собственный независимый процессор, вместо того чтобы один поток микроуправлял всем.

Архитектура важна, потому что она меняет то, как масштабируется ваш сервер.

Paper хорошо справляется с серверами миллионов игроков в рамках однопоточного дизайна, но как только вы переходите на следующий уровень масштабирования - сотни игроков, разбросанные по огромному миру - появляются узкие места. Folia не пытается выжать больше из одного потока. Вместо этого она кардинально меняет саму проблему.


Почему вам это нужно

Большие распределённые серверы получают наибольшую пользу. Сети Skyblock, где игроки находятся на плавающих островах, разбросанных по измерениям, огромные миры выживания, пользовательские RPG-серверы с распределёнными подземельями - вот где Folia сияет. Если ваши игроки кластеризуются в одной зоне спауна, вы не увидите такого же прироста производительности. Но для SMP на 200+ игроков, где люди исследуют разные квадранты, разница существенна.

Должен сказать заранее - это не замена "plug and play".

Ваши плагины нужно переписать для многопоточной среды Folia. В этом реальная стоимость. Но если вы на том уровне масштабирования, где это рассматриваете, ваша экосистема плагинов, вероятно, уже пользовательская. Стандартные плагины Paper, которые не предполагают основной поток, сломаются сразу же под Folia.

Но выигрыш реален. При правильной конфигурации вы получите реальный прирост производительности, который масштабируется с количеством ядер процессора. Это недостижимо на стандартном Paper.


Установка и базовая настройка

Сначала скачайте последнюю сборку со страницы загрузок PaperMC. По состоянию на 2026 год Folia поддерживает современные версии Minecraft (1.20.4 и позже). Скачайте jar-файл в директорию сервера:

<! - 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 - >

Далее вам нужно принять EULA в файле eula.txt. Запустите сервер один раз, чтобы создать файлы конфигурации:

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

Остановите сервер (он создаст конфиг folia.yml), а затем начинается настоящая работа - конфигурация потоков. Это не просто "установите больше потоков и всё". Документация PaperMC рекомендует предварительно сгенерировать ваш мир перед переходом на production, что значительно снижает нагрузку при загрузке чанков.


Конфигурация потоков - настоящий вызов

Здесь большинство людей запутаются. Ваш folia.yml имеет настройку `threaded-regions.threads`. Не просто устанавливайте её на максимум. Рекомендация самого проекта - выделите потоки для netty IO (примерно 4 на 200-300 игроков), потоки IO системы чанков (примерно 3 на 200-300 игроков), рабочие системы чанков если предварительно сгенерировано (примерно 2 на 200-300 игроков), а затем используйте оставшиеся ядра вплоть до 80% общего выделения для потоков тика.

На машине с 32 ядрами, обслуживающей 500 игроков, вы примерно выделили бы:

  • Netty IO - 8 потоков
  • IO системы чанков - 6 потоков
  • Рабочие системы чанков - 4 потока
  • Потоки тика - оставшиеся ядра вплоть до 80% (примерно 10 потоков)

Вы не оставляете 100% выделение, потому что плагины и неожиданные фоновые задачи будут создавать свои собственные потоки и крушить сервер. Потолок 80% - это граница безопасности, которая действительно имеет значение.

Даже тогда - это только отправная точка. Мониторьте реальное использование потоков под нагрузкой и корректируйте. Файл folia.yml содержит детальные комментарии для каждой опции.


Ключевые функции, которые работают

Изоляция региона. Каждый регион тикает независимо на 20 TPS. Всплеск лага в одном регионе не каскадируется на остальные. Если ваша система подземелий плохо оптимизирована, она не уронит производительность вашей зоны спауна.

Правильное масштабирование потоков. В отличие от подхода с пулом потоков плагинов Paper (который всё ещё узко место на критических операциях тика), регионы Folia запускают логику тика параллельно. Больше ядер действительно означает больше обработки тика. Масштабирование не линейное, но оно реальное.

Асинхронная загрузка чанков. IO чанков происходит вне потоков региона. Вы не получите случайные зависания, которые испытывают однопоточные серверы при скачках чтения хранилища.

Есть также встроенная поддержка оптимизации чанков на стороне сервера, предварительного кэширования сгенерированных чанков и настраиваемых лимитов памяти на регион. Честно говоря, глубина функций впечатляет, если вы готовы копнуть в документацию.


Что сломается и как это обработать

Большинство плагинов предполагают, что они находятся в основном потоке и что они могут безопасно читать/писать состояние мира без синхронизации. На Folia они ошибаются. Если плагин делает что-то вроде "проверить, является ли блок X камнем, затем установить его в воздух", это состояние гонки может произойти между потоками так, как это никогда не произойдёт на Paper. Ожидайте отказов плагинов.

Конкретные примеры:

  • Телепортация между регионами включает дополнительную сложность и может вызвать взаимные блокировки, если плагины не осторожны
  • Проверки границы мира зависят от региона и могут вести себя иначе, чем вы ожидаете
  • Таймеры и запланированные задачи должны быть безопасны для региона, чтобы избежать повреждения данных
  • Отслеживание сущностей через границы региона требует обновления плагинов

Документы Folia явно перечисляют несовместимые паттерны. Если вы оцениваете совместимость плагинов, проверьте, прямо ли они манипулируют логикой тика или предполагают однопоточный доступ к данным чанков.


Когда Folia имеет смысл

У вас есть машина с 16+ ядрами. Ваш сервер будет регулярно достигать 200+ одновременно подключённых игроков. Ваши игроки географически разбросаны (не все в зоне спауна). У вас либо пользовательская инфраструктура плагинов, либо вы готовы портировать существующие плагины.

Эти четыре условия? Вы кандидат.

Вы запускаете 50 игроков на VPS с 8 ядрами? Придерживайтесь Paper. Выигрыш не оправдает головную боль совместимости. Вы запускаете 100-игроковый SMP, где все висят в спауне? Folia помогает, но не так драматично, как на распределённом сервере.

Но если вы строите следующее поколение серьёзных многопользовательских сообществ Minecraft, Folia - это то место, где потолок производительности действительно выше. Игроки с скинами как у adderall_abuser, ironmouse и другие активные члены сообщества на огромных серверах уже изучают это направление. Посмотрите потоковые сообщества и крупные проекты выживания на Modrinth - вы будете видеть Folia всё чаще.


Альтернативы, которые стоит рассмотреть

Paper. Всё ещё золотой стандарт для большинства серверов. Стабилен, хорошо понимается, огромная экосистема плагинов. Если Folia кажется избыточной, функции оптимизации Paper (асинхронная загрузка чанков, сниженные тики AI сущностей и т.д.) могут быть достаточными.

Purpur. Версия Paper с дополнительными оптимизациями per-player. Лучше для серверов, где опыт игроков сильно различается (некоторые AFK, некоторые активно исследуют). Меньше изменений архитектуры, чем Folia, более целевой прирост производительности.

Fabric Server. Если вам нужна поддержка модов (не плагины), экосистема Fabric на самом деле довольно неплоха для серверов сейчас. Не многопоточна так же, как Folia, но лёгкая и быстрая.

Честная правда - Folia специализирована. Это для конкретной проблемы на конкретном уровне масштабирования. Для всех остальных Paper с продуманной конфигурацией остаётся правильным выбором.

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