Гайд Оптимизация сервера майнкрафт

Новичок
Статус
Оффлайн
Регистрация
7 Авг 2020
Сообщения
15
Реакции[?]
28
Поинты[?]
0


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

Производительность майнкрафт серверов измеряется в TPS — Ticks per seconds — тиках в секунду. Максимальный и идеальный показатель тпс — 20. Тпс может понижаться при нагрузке на сервер. Для того чтобы узнать его значение, нужно ввести команду /tps.

Значения ТПС:
  • 16 и ниже — ужасная производительность, значительные лаги
  • 16-18.5 — плохая производительность, но лаги чувствуются не так сильно
  • 18.5-19.93 — средняя производительность, лаги почти незаметны
  • 19.93-19.99 — отличная производительность, лаги не чувствуются. На большинстве крупных серверов значение тпс имеет значение именно в этом диапазоне
  • 20 — идеальный показатель
В случае, если ваш TPS находится в районе от 0 до 19, серверу может понадобиться оптимизация. Если же тпс в норме, а лаги всё равно есть, имеет смысл проверить свой интернет или купить VDS.


Оптимизация сервера


1) Плагины


Spark

Для выяснения причины лагов необходим профайлер. Лучшим профайлером для серверов является Spark. Spark — это многофункциональный плагин, позволяющий детальнее мониторить загрузку сервера и составлять подробный отчёт о том, что именно его нагружает.
Для теста я построил такую лаг-машину:



В ней находится 600 вагонеток. Просадить тпс на моём тестовом сервере она смогла до 7:



Теперь я запускаю профайлер командой /spark profiler.



Спарк собирает информацию и анализирует загрузку сервера. Обычно бывает достаточно десяти минут профайлинга, на тестовом сервере я выделил на это всего минуту. Остановить этот процесс можно командой /spark profiler --stop. В чат будет отправлена ссылка на результат. переходим и видим полную картину:



Наибольшее тик-время отнимает обработка Entity.move.


Clearlaggs

Исправить такую лаг-машину можно, удалив её и все находящиеся в ней вагонетки. А чтобы найти её в мире, понадобится плагин ClearLaggs, способный искать чанки, которые больше всего влияют на ТПС.

Устанавливаем плагин, поместив его в папку Plugins и перезагружаем сервер

Теперь нам доступен большой функционал для борьбы с лагами, а в частности — команда /lagg chunk, которая выводит список наиболее нагруженных чанков с их координатами


и /lagg tpchunk, позволяющая телепортироваться на этот чанк, введя его координаты


Быстро удалить все вагонетки можно командой /kill @e[type=minecart,r=10], где type — вид сущности, а r — радиус удаления.


Worldedit

Большие падения производительности может вызывать использование устаревшего плагина WorldEdit, который не способен на асинхронную работу и выполнение в отдельном потоке. Особенно заметным это становится при изменении больших территорий. В этом случае незаменимым является FastAsyncWorldEdit. Из преимуществ:
  • Чрезвычайная кастомизируемость
  • Использование минимального количества ресурсов сервера
  • Безопасность использования
  • Высокая скорость даже в самом медленном режиме
FAWE полностью совместим с API оригинального WorldEdit, и поэтому поддерживает любые другие плагины, предназначенные для интеграции с ним.

Основной функционал FAWE:
  • Более 200 команд
  • Поддержка веб-панели
  • Бесконечная команда //undo
  • Расширенные лимиты на игроков
  • CFI-команды для создания новых миров
  • Мгновенное копирование произвольного размера командой //lazycopy
  • Автоматическое восстановление частично повреждённых файлов Schematic
  • Смешивание биомов, импорт изображений, создание пещер, визуализация схематик и многое другое
Для примера: я решил полностью удалить (//set 0) территорию, размером почти 3 миллиона блоков:



FAWE справился с этим чуть более, чем за 3 секунды



тогда как обычный WorldEdit, по моему опыту, уже бы полностью положил сервер.

Этот самый кусок:





Chunky
Большую часть нагрузки сервера составляет генерация чанков. Этого можно избежать, сгенерировав их заранее. Для этого и создан плагин Chunky, позволяющий превентивно генерировать чанки в заданном диапазоне. Функционал:
  • Поддержка многоядерной генерации
  • Возможность приостановки процесса
  • Подробный вывод информации о состоянии текущей задачи генерации
Инструкция по генерации всех чанков внутри границы мира радиусом 5000 блоков:
  1. /worldborder center 0 0
  2. /worldborder set 10000
  3. /chunky worldborder
  4. /chunky start


2) Конфигурация



Paper

Настройки ядра пейпер хранятся в файле paper.yml, и большое количество значений там можно оптимизировать:
  1. max-auto-save-chunks-per-tick — частота сохранения чанков. Оптимизированное значение — 8
  2. optimize-explosions — использование методов Paper для просчёта взрывов. Оптимизированное значение — true
  3. max-entity-collisions — количество обрабатываемых столкновений за тик. Оптимизированное значение — 2
  4. grass-spread-tick-rate — частота попыток распространения травы. Оптимизированное значение — 4
  5. despawn-range — радиус от игроков, на котором начинают удаляться мобы. Оптимизированное значение: soft — 28, hard — 96
  6. use-faster-eigencraft-redstone — улучшенный редстоун-алгоритм, не меняющий ванильные механики. Оптимизированное значение — true
  7. per-player-mob-spawns — распределение спавна мобов на каждого игрока. Оптимизированное значение — true


Spigot
Spigot.yml — файл, генерируемый по умолчанию.
  1. entity-activation-range — дистанция активации интеллекта мобов. Оптимизированные значения: animals — 24, monsters — 24, raiders (с версии 1.14) — 48, misc — 8
  2. merge-radius — радиус слияния предметов на земле. Оптимизированные значения: item — 4, xp — 6
  3. view-distance — количество чанков, отправляемых игроку при прорисовке. Оптимизированное значение — 8


Bukkit

Bukkit.yml — файл, генерируемый по умолчанию.
  1. chunk-gc — частота выгрузки пустых чанков. Оптимизированное значение — 400​
  2. autosave — частота автосохранения. Оптимизированное значение — 9000​


На этом основная информация по оптимизации заканчивается. Возможно, статья будет дополняться.
 
Участник
Статус
Онлайн
Регистрация
9 Дек 2019
Сообщения
723
Реакции[?]
161
Поинты[?]
2K
я конечно нихуя не понял но круто
 
Забаненный
Статус
Оффлайн
Регистрация
6 Фев 2022
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.


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

Производительность майнкрафт серверов измеряется в TPS — Ticks per seconds — тиках в секунду. Максимальный и идеальный показатель тпс — 20. Тпс может понижаться при нагрузке на сервер. Для того чтобы узнать его значение, нужно ввести команду /tps.

Значения ТПС:
  • 16 и ниже — ужасная производительность, значительные лаги
  • 16-18.5 — плохая производительность, но лаги чувствуются не так сильно
  • 18.5-19.93 — средняя производительность, лаги почти незаметны
  • 19.93-19.99 — отличная производительность, лаги не чувствуются. На большинстве крупных серверов значение тпс имеет значение именно в этом диапазоне
  • 20 — идеальный показатель
В случае, если ваш TPS находится в районе от 0 до 19, серверу может понадобиться оптимизация. Если же тпс в норме, а лаги всё равно есть, имеет смысл проверить свой интернет или купить VDS.


Оптимизация сервера


1) Плагины


Spark

Для выяснения причины лагов необходим профайлер. Лучшим профайлером для серверов является Spark. Spark — это многофункциональный плагин, позволяющий детальнее мониторить загрузку сервера и составлять подробный отчёт о том, что именно его нагружает.
Для теста я построил такую лаг-машину:



В ней находится 600 вагонеток. Просадить тпс на моём тестовом сервере она смогла до 7:



Теперь я запускаю профайлер командой /spark profiler.



Спарк собирает информацию и анализирует загрузку сервера. Обычно бывает достаточно десяти минут профайлинга, на тестовом сервере я выделил на это всего минуту. Остановить этот процесс можно командой /spark profiler --stop. В чат будет отправлена ссылка на результат. переходим и видим полную картину:



Наибольшее тик-время отнимает обработка Entity.move.


Clearlaggs

Исправить такую лаг-машину можно, удалив её и все находящиеся в ней вагонетки. А чтобы найти её в мире, понадобится плагин ClearLaggs, способный искать чанки, которые больше всего влияют на ТПС.

Устанавливаем плагин, поместив его в папку Plugins и перезагружаем сервер

Теперь нам доступен большой функционал для борьбы с лагами, а в частности — команда /lagg chunk, которая выводит список наиболее нагруженных чанков с их координатами


и /lagg tpchunk, позволяющая телепортироваться на этот чанк, введя его координаты


Быстро удалить все вагонетки можно командой /kill @e[type=minecart,r=10], где type — вид сущности, а r — радиус удаления.


Worldedit

Большие падения производительности может вызывать использование устаревшего плагина WorldEdit, который не способен на асинхронную работу и выполнение в отдельном потоке. Особенно заметным это становится при изменении больших территорий. В этом случае незаменимым является FastAsyncWorldEdit. Из преимуществ:
  • Чрезвычайная кастомизируемость
  • Использование минимального количества ресурсов сервера
  • Безопасность использования
  • Высокая скорость даже в самом медленном режиме
FAWE полностью совместим с API оригинального WorldEdit, и поэтому поддерживает любые другие плагины, предназначенные для интеграции с ним.

Основной функционал FAWE:
  • Более 200 команд
  • Поддержка веб-панели
  • Бесконечная команда //undo
  • Расширенные лимиты на игроков
  • CFI-команды для создания новых миров
  • Мгновенное копирование произвольного размера командой //lazycopy
  • Автоматическое восстановление частично повреждённых файлов Schematic
  • Смешивание биомов, импорт изображений, создание пещер, визуализация схематик и многое другое
Для примера: я решил полностью удалить (//set 0) территорию, размером почти 3 миллиона блоков:



FAWE справился с этим чуть более, чем за 3 секунды



тогда как обычный WorldEdit, по моему опыту, уже бы полностью положил сервер.

Этот самый кусок:





Chunky
Большую часть нагрузки сервера составляет генерация чанков. Этого можно избежать, сгенерировав их заранее. Для этого и создан плагин Chunky, позволяющий превентивно генерировать чанки в заданном диапазоне. Функционал:
  • Поддержка многоядерной генерации
  • Возможность приостановки процесса
  • Подробный вывод информации о состоянии текущей задачи генерации
Инструкция по генерации всех чанков внутри границы мира радиусом 5000 блоков:
  1. /worldborder center 0 0
  2. /worldborder set 10000
  3. /chunky worldborder
  4. /chunky start


2) Конфигурация



Paper

Настройки ядра пейпер хранятся в файле paper.yml, и большое количество значений там можно оптимизировать:
  1. max-auto-save-chunks-per-tick — частота сохранения чанков. Оптимизированное значение — 8
  2. optimize-explosions — использование методов Paper для просчёта взрывов. Оптимизированное значение — true
  3. max-entity-collisions — количество обрабатываемых столкновений за тик. Оптимизированное значение — 2
  4. grass-spread-tick-rate — частота попыток распространения травы. Оптимизированное значение — 4
  5. despawn-range — радиус от игроков, на котором начинают удаляться мобы. Оптимизированное значение: soft — 28, hard — 96
  6. use-faster-eigencraft-redstone — улучшенный редстоун-алгоритм, не меняющий ванильные механики. Оптимизированное значение — true
  7. per-player-mob-spawns — распределение спавна мобов на каждого игрока. Оптимизированное значение — true


Spigot
Spigot.yml — файл, генерируемый по умолчанию.
  1. entity-activation-range — дистанция активации интеллекта мобов. Оптимизированные значения: animals — 24, monsters — 24, raiders (с версии 1.14) — 48, misc — 8
  2. merge-radius — радиус слияния предметов на земле. Оптимизированные значения: item — 4, xp — 6
  3. view-distance — количество чанков, отправляемых игроку при прорисовке. Оптимизированное значение — 8


Bukkit

Bukkit.yml — файл, генерируемый по умолчанию.
  1. chunk-gc — частота выгрузки пустых чанков. Оптимизированное значение — 400​
  2. autosave — частота автосохранения. Оптимизированное значение — 9000​


На этом основная информация по оптимизации заканчивается. Возможно, статья будет дополняться.
Спащен текст с безизвестного форума среди майнкрафтеров
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
449
Реакции[?]
36
Поинты[?]
5K
Спащен текст с безизвестного форума среди майнкрафтеров
и что? на югейме много людей, которые из них может быть имеют сервер на майнкрафте и думают об оптимизации.
 
HvH Инспектор
Пользователь
Статус
Оффлайн
Регистрация
27 Окт 2016
Сообщения
246
Реакции[?]
135
Поинты[?]
2K
для прогрузки карты можно использовать wb вместо чанки(хз кто им пользуется но лан)
+ настройки бумаги очень поверхностные, тс лучше укажи для какого онлайна данные настройки применимы
 
Сверху Снизу