Производительность Fabric/Forge

Зачем?

Зачем? Почему? Как? и вообще для чего?
Наконец-то я выложу гайд по оптимизации forge/fabric серверов.
Мы все привыкли, что forge/fabric - уже давно являются очень не оптимизированными ядрами для разработки серверов. Что-ж исправим это!

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

И так узнаем что вызывает лаги на ваших серверах:

  1. Это не прогруженная карта мира, когда вы ходите вы прогружаете новые территории и сервер просто может долго реагировать на такие действия, так как кроме прогрузки чанков он прогружает и мобов блоки рядом, сущности и многое другое.
  2. Это тяжелые сборки с неоптимизированными настройками. Они постоянно отправляют какие либо данные ядру и постоянно изменяют какой либо кэш.
  3. Отсутствие модов для оптимизаций для хэшированной прогрузки уже созданных чанков.
  4. Модификации не совсем подходит под серверную часть, но является нужной или важной.
  5. Разные версии поддержки на разных forge компиляциях.
  6. Моды которые являются серверными но не сделаны под сервера.
  7. Моды которые вызывают частые краши клиента и серверов
  8. Повышение количества тиков за полученные информационные данные.
  9. Повышение количества и не установленные ограничения для появления новых сущностей.
  10. Моды вирусы.
  11. Моды сеть-менеджеры.
    И так, когда мы узнали причины нестабильной нагрузки сервера, мы можем начинать работы с оптимизацией forge клиентов.

Решение проблемы

  1. установить мод chunky и прогрузить мир на желаемое количество блоков. Но главное не переборщить или [Chunky Pregenerator]
  2. Для решения второй ситуации нам нужно изучать тяжёлые моды и проверять нужность тех или иных действий выбранного вами плагина в папке config.
  3. Если сборка сильно подвисает - то вам нужно проверить возможность добавления новых модов связанных с оптимизацией структур и файлов. На более старых версиях нужно устанавливать модификации которые чинят свет в областях. для примера (FerriteCore, Memory Leak Fix, ModernFix, Starlight (для версий до 1.20), Canary) это оптимизирует вашу сборку и уберёт потребляемых сразу до 500 оперативной памяти!
  4. В данном случае нужно искать аналог данного мода либо просто избавиться от него. Как их определить? - сервер очень часто флудит ошибками и неполадками после чего возрастают задержки.
  5. Как правило моды могут создаваться под определённую версию forge и определённый билд. Билд это номер модификации forge в которой есть устаревшие или новые изменения для работы с ядром и java. Это значит нужно искать модификации под один билд или сменить установленный билд на нужный.
  6. Нужно ограничить спавн сущностей и их количество, но как правило это можно сделать только на модифицированных ядрах.
  7. Установить мод: [Mobstacker] - повышает производительность игры за счёт объединения одинаковых мобов в одного
  8. Установить мод: [Achievements Optimizer] - Если у вас много модов с огромными NBT-тегами
  9. Установить мод: [Let Me Despawn] - Для удаления мобов которые держат в руках предмет если вы далеко ушли.
  10. Установить мод: [Saturn] - Для оптимизации потребления оперативной памяти.
  11. Установить мод: [Accelerated Decay] - Для ускорения опадения листвы.
  12. Установить мод: [MemoryLeakFix] - Фикс утечек памяти
  13. [Spark mod] - слежка за утечками памяти.

Результат

При выполнении всех данных пунктов. Как для примера возьмём сборку ATM 8 - то у нас с 6 гб оперативной памяти упало до 4.5 - это очень большой прогресс, при этом затронуто не так уж много модов.

Прошу заметить

Оптимизация сборки зависит лишь от вашей ситуации - если вы для большой сборки хотите дёшёвый сервер - то даже этот блог не поможет вам. Нужны мощные сервера для создания хороших проектов даже для игры. Если с ATM 8 мы использовали 8 гигабитный сервер, но не играли на нём - а проверяли через SPARK. Если вы знаете ещё способы оптимизации - пишите тут обязательно, это помогает всем.