Статья написана для версии 1.17, но может подойдет для 1.18+
Лаги в майнкрафт сервере, что делать? — поверьте, это самый популярный вопрос, который возникает практически у каждого новичка в сфере серверов в этой замечательной игре. Не переживайте, так как вы уже сделали первый шаг к решению данной проблемы. Читайте весь репозиторий внимательно и выполняйте наши рекомендации постепенно.
Эта статья основана на версии 1.17.1 с ванильными ядрами. Если у вас моды — мы не думаем, что вы нашли подходящее руководство. Также, обратите внимание на то, что результаты стабильности и корректной работоспособности сервера после оптимизации может отличатся в разных случаях. Если вы уверены, что была допущена ошибка или тут чего-то нехватает - пожалуйста, отпишите нам.
Делайте регулярные перезапуски сервера, например каждый день.
Так как это освобождает мусор из ОЗУ, отгружает чанки и сохраняет карту. Это как минимум делают крупные сервера, несмотря на uptime
TPS — сокращение от Ticks per Second — это число тактов за секунду. Чем выше данный показатель, тем большая производительность сервера. В среднем это значение варьируется от 19.8 до 20.0. Вы можете прописать /tps
и посмотреть на цифры. У вас ниже 19.5 TPS? Сервер подлагивает.
Выбор ядра — очень важная вещь при сборке вашего сервера. Ядро напрямую влиет на производительность сервера. На данный момент существуют несколько ядер, которые мы советуем использовать, но есть и те, от которых вам категорически нужно отказаться.
Рекомендую:
Нерекомендую:
Пожалуйста, остерегайтесь других ядер! В 99.99% случаев это лишь название. Ваш сервер и его данные могут пострадать.
Сборщик мусора обязательно должен стоять в каждом сервере, так как Java очень любит кушать оперативную память, но очищает её плохо.
Если вы используете наш хостинг, действий принимать не требуется, в иных случаях вам нужно вставить -XX:+UseSerialGC
в строку запуска. По нашим тестам, этот сборщик оказывается лучше, чем тот, который применён в флагах Aikar'а.
java -Xmx2G -Xms16G -XX:+UseSerialGC -jar airplane.jar nogui
Прогрузите карту с помощью плагина Chunky. Станьте на нулевые координаты карты и введите эти команды поочерёдно: /chunky center
, /chunky radius 3000
, /chunky start
. Готово! Теперь вам нужно подождать некоторое время, пока плагин прогрузит 3000 блоков, которые мы задали во второй команде. Желательно ограничить свой мир до 3-6 тыс. блоков. Поверьте, такого количества блоков будет вполне достаточно, чтобы всем было приятно играть. Если нужно увеличить размер карты до более высоких значений — вместо 3000 напишите своё число.
Есть и другой плагин для прогрузки карты — WorldBorder, если вам надо.
Никогда не ставьте плагины, которые заявляют, что они оптимизируют ваш сервер или плагины, которые изменяют генерацию мира. ClearLagg и ему подобные создают фатальные лаги.
Ссылки на плагины, которые действительно оптимизируют сервер: ServerBooster, MFM.
Плагины, автоматически сохраняющие мир — не имеют смысла. Multiverse Core замените на BungeeCord — систему (ядро), которая позволяет связывать несколько серверов между собой. Также, скачивать плагины нужно только с этих сайтов: spigotmc.org, dev.bukkit.org. В целях безопасности вашего-же сервера, не ищите ресурсы в других местах.
И ещё: советуем не засорять свой сервер изрядным количеством плагинов. Чем больше плагинов, тем больше нагрузка на сервер. Добавьте столько плагинов, чтобы вашим игрокам было приятно играть. Согласитесь, когда вы видите перед собой текст в боссбаре, скорборде, в автоматических сообщениях в чате, а уж тем более надписи на весь экран, желание уйти с этого сервера возрастает до 100%, не так ли? Административные плагины, которые используются раз в никогда — советуем удалить, различные дополнения, которыми мало кто будет пользоваться — советуем удалить, ненужные плагины просто удаляйте.
view-distance - дистанция прогрузки чанков. Если на сервере много игроков и лаги происходят из-за чанков - снижайте этот параметр до 4-5 чанков. 6 чанков вполне достаточно для ванильного выживания.
view-distance=6
spawn-limits - параметр, который отвечает за изменение количества мобов на одного игрока. Эти ограничения применяются только к животным или монстрам в загруженных чанках. Если вам не нужны летучие мыши - ambient ставьте на 0.
monsters: 25, animals: 8, water-animals: 2, water-ambient: 1, ambient: 1
period-in-ticks - чем меньше, тем быстрее сервер будет выгружать пустые чанки. Если на вашем сервере играет больше 60 человек, желательно опустить этот параметр до 350.
period-in-ticks: 400
autosave - если у сервера стоит HDD накопитель, вам придётся страдать от лагов из-за автоматического сохранения. Вы должны иметь SSD накопитель для нормальной работы сервера. Поднимите значение до 12000 для комфортной игры. Кстати, если у вас стоит плагин на автосохранение мира - удалите его, используйте этот параметр, он ничем не хуже.
autosave: 12000
save-user-cache-on-stop-only - этот параметр отключает постоянное сохранение пользовательских данных. Если ваш сервер аварийно выключиться, пользовательские данные не будут сохранены. Желательно перезагружать свой сервер раз в 48-72 часа, чтобы предотвратить потери. Изменяйте этот параметр на свой страх и риск!
save-user-cache-on-stop-only: true
entity-activation-range - это группа параметров, которая регулирует, насколько близко животные и мобы должны находиться к вам, чтобы активировать свой ИИ. Числа обозначают расстояние в блоках. Если вы выйдите из "зоны активации ИИ" - мобы не будут двигаться, подойдёте обратно - включат свой ИИ. Вот так это всё и работает.
animals: 16
monsters: 24
raiders: 48
misc: 8
mob-spawn-range - этот параметр регулирует радиус спавна мобов возле вас. Значение должно быть на единицу меньше от кол-ва чанков, которое вы выставили.
mob-spawn-range: 5
max-auto-save-chunks-per-tick - параметр замедляет частоту сохранения чанков. Не опускайте значение ниже 12, иначе некоторые чанки могут не сохраниться вообще.
max-auto-save-chunks-per-tick: 12
mob-spawner-tick-rate - тики моба, вызванного спавнером. Не поднимайте значение выше.
mob-spawner-tick-rate: 2
prevent-moving-into-unloaded-chunks - если игрок каким-то образом попал в незагруженный чанк - он постоянно будет проваливаться вниз (в пустоту), а когда сервер прогрузит чанки, он может с ним сыграть в злую шутку, не телепортировав игрока обратно. Игрок может просто умереть в пустоте. Чтобы такого не произошло, нужно включить данный параметр.
prevent-moving-into-unloaded-chunks: true
armor-stands-tick - выключив данный параметр, сервер не будет проверять стенды для брони.
armor-stands-tick: false
После того, как вы проделали всё, что было написано в данной статье — проверьте стабильность и производительность сервера. Не лагает ли он? Для этого вам необходимо прописать эти команды: /mspt
, /tps
. Если после запуска сервера прошло 5-10 минут и максимальная цифра в mspt не превышает 150.0, а TPS варьируется в районе 19.8-20.0 — отлично, вы оптимизировали свой сервер. Поздравляю!
Скорее всего, вы либо что-то неправильно сделали, либо пропустили какой-то пункт из статьи. Если сервер продолжает лагать даже после оптимизации — время задуматься о деньгах, ибо вам нужно покупать больше мощностей.
Авторство: Cubelius