Зачем?
Зачем? Почему? Как? и вообще для чего?
Наконец-то я выложу гайд по оптимизации forge/fabric серверов.
Мы все привыкли, что forge/fabric - уже давно являются очень не оптимизированными ядрами для разработки серверов. Что-ж исправим это!
Начнём с того, что любые сервера находятся на удалённых компьютерах и имеют постоянное подключение к интернету с открытым адресом. Что означает что зайти на ваш сервер может любой человек. По этому нужно понимать, что сервера могут зависать и вызывать перегрузку. Для таких случаев сущевствуют различные моды или параметры для оптимизации ваших серверов.
И так узнаем что вызывает лаги на ваших серверах:
- Это не прогруженная карта мира, когда вы ходите вы прогружаете новые территории и сервер просто может долго реагировать на такие действия, так как кроме прогрузки чанков он прогружает и мобов блоки рядом, сущности и многое другое.
- Это тяжелые сборки с неоптимизированными настройками. Они постоянно отправляют какие либо данные ядру и постоянно изменяют какой либо кэш.
- Отсутствие модов для оптимизаций для хэшированной прогрузки уже созданных чанков.
- Модификации не совсем подходит под серверную часть, но является нужной или важной.
- Разные версии поддержки на разных forge компиляциях.
- Моды которые являются серверными но не сделаны под сервера.
- Моды которые вызывают частые краши клиента и серверов
- Повышение количества тиков за полученные информационные данные.
- Повышение количества и не установленные ограничения для появления новых сущностей.
- Моды вирусы.
- Моды сеть-менеджеры.
И так, когда мы узнали причины нестабильной нагрузки сервера, мы можем начинать работы с оптимизацией forge клиентов.
Решение проблемы
- установить мод chunky и прогрузить мир на желаемое количество блоков. Но главное не переборщить или [Chunky Pregenerator]
- Для решения второй ситуации нам нужно изучать тяжёлые моды и проверять нужность тех или иных действий выбранного вами плагина в папке config.
- Если сборка сильно подвисает - то вам нужно проверить возможность добавления новых модов связанных с оптимизацией структур и файлов. На более старых версиях нужно устанавливать модификации которые чинят свет в областях. для примера (FerriteCore, Memory Leak Fix, ModernFix, Starlight (для версий до 1.20), Canary) это оптимизирует вашу сборку и уберёт потребляемых сразу до 500 оперативной памяти!
- В данном случае нужно искать аналог данного мода либо просто избавиться от него. Как их определить? - сервер очень часто флудит ошибками и неполадками после чего возрастают задержки.
- Как правило моды могут создаваться под определённую версию forge и определённый билд. Билд это номер модификации forge в которой есть устаревшие или новые изменения для работы с ядром и java. Это значит нужно искать модификации под один билд или сменить установленный билд на нужный.
- Нужно ограничить спавн сущностей и их количество, но как правило это можно сделать только на модифицированных ядрах.
- Установить мод: [Mobstacker] - повышает производительность игры за счёт объединения одинаковых мобов в одного
- Установить мод: [Achievements Optimizer] - Если у вас много модов с огромными NBT-тегами
- Установить мод: [Let Me Despawn] - Для удаления мобов которые держат в руках предмет если вы далеко ушли.
- Установить мод: [Saturn] - Для оптимизации потребления оперативной памяти.
- Установить мод: [Accelerated Decay] - Для ускорения опадения листвы.
- Установить мод: [MemoryLeakFix] - Фикс утечек памяти
- [Spark mod] - слежка за утечками памяти.
Результат
При выполнении всех данных пунктов. Как для примера возьмём сборку ATM 8 - то у нас с 6 гб оперативной памяти упало до 4.5 - это очень большой прогресс, при этом затронуто не так уж много модов.
Прошу заметить
Оптимизация сборки зависит лишь от вашей ситуации - если вы для большой сборки хотите дёшёвый сервер - то даже этот блог не поможет вам. Нужны мощные сервера для создания хороших проектов даже для игры. Если с ATM 8 мы использовали 8 гигабитный сервер, но не играли на нём - а проверяли через SPARK. Если вы знаете ещё способы оптимизации - пишите тут обязательно, это помогает всем.