Загрузка...
survivalarena.ru
Click to copy IP
Загрузка...
discord.gg/k3x6hyh7sQ
Click to join
Avatar
Добро пожаловать!
Авторизируйтесь для доступа к сайту
Internet Explorer: Internet Explorer iне поддерживается. Перейдите на более современный браузер.
Руководство по оптимизации сервера Minecraft
Bronzaw
11 постов
11 топиков
Minecraft: Bronzaw
около года назад

ВАЖНО! Это не статья нашего сообщество, а перевод на русский. 

Оригинал статьи можно найти по адресу: minecraft-optimization/README.md at 1.20 · YouHaveTrouble/minecraft-optimization · GitHub

Руководство по оптимизации сервера Minecraft

Примечание для пользователей, использующих vanilla, Fabric или Spigot (или что-то ниже Paper): Перейдите в файл server.properties и установите значение sync-chunk-writes в false. Эта опция принудительно устанавливается в false в Paper и его форках, но в других реализациях сервера вам нужно вручную установить это значение в false. Это позволит серверу сохранять чанки вне основного потока, что снижает нагрузку на основной цикл тиков.

Руководство для версии 1.20. Некоторые рекомендации могут быть актуальны также для версий 1.15 - 1.19.

Это руководство основано на данном руководстве и других источниках (все они ссылки внутри руководства, когда это уместно).

Введение Никогда не будет существовать руководства, которое даст вам идеальные результаты. У каждого сервера свои потребности и ограничения, и настройка параметров под нужды вашего сервера - это важная часть процесса. Это руководство призвано помочь вам понять, какие параметры влияют на производительность и что именно они меняют. Если вы обнаружите неточную информацию в этом руководстве, не стесняйтесь открывать issue или создавать pull request для исправления.

Подготовка JAR-файл сервера Ваш выбор серверного программного обеспечения может существенно влиять на производительность и возможности API. На данный момент существует несколько популярных серверных JAR-файлов, но также есть несколько, от которых лучше держаться подальше по разным причинам.

Рекомендованные лучшие варианты:

  • Paper - Самое популярное серверное программное обеспечение, которое стремится улучшить производительность и исправить несоответствия в геймплее и механике.
  • Pufferfish - Форк Paper, который нацелен на дальнейшее улучшение производительности сервера.
  • Purpur - Форк Pufferfish, сосредоточенный на функциях и свободе настройки.

Вам следует избегать:

  • Любой платный серверный JAR, который утверждает что-то асинхронное - существует 99,99% шанс, что это мошенничество.
  • Bukkit/CraftBukkit/Spigot - Крайне устаревшие с точки зрения производительности по сравнению с другими серверными программами, к которым у вас есть доступ.
  • Любой плагин/программное обеспечение, которое включает/отключает/перезагружает плагины во время выполнения.

Многие форки, созданные на основе Pufferfish или Purpur, могут столкнуться с нестабильностью и другими проблемами. Если вы ищете больше прироста производительности, оптимизируйте свой сервер или вложитесь в создание личного частного форка.

Предварительная генерация карты:

Предварительная генерация карты благодаря различным оптимизациям генерации чанков, добавленным за последние годы, теперь полезна только на серверах с плохими, одноядерными или ограниченными по производительности процессорами. Однако предварительная генерация часто используется для создания чанков для плагинов карт мира, таких как Pl3xMap или Dynmap.

Если вы все же хотите предварительно сгенерировать мир, вы можете использовать такой плагин, как Chunky. Обязательно установите границы мира, чтобы ваши игроки не генерировали новые чанки! Учтите, что предварительная генерация может занять несколько часов в зависимости от радиуса, который вы зададите в плагине для предварительной генерации. Помните, что в Paper и выше TPS (тики в секунду) не будет затронут загрузкой чанков, но скорость загрузки чанков может значительно замедлиться при перегрузке процессора вашего сервера.

Важно помнить, что в обычном мире, нижнем мире и краю нужно установить отдельные границы мира. Нижний мир в 8 раз меньше обычного (если не изменено с помощью дата-пака), так что если вы зададите неправильный размер, ваши игроки могут оказаться за пределами границы мира!

Обязательно установите границы мира с помощью команды (/worldborder set [диаметр]), так как это ограничивает некоторые функции, такие как диапазон поиска на картах сокровищ, что может вызвать лаги.

Конфигурации

Сетевые настройки

server.properties network-compression-threshold Рекомендуемое начальное значение: 256

Эта опция позволяет установить порог для размера пакета перед тем, как сервер попытается его сжать. Установка более высокого значения может сэкономить ресурсы ЦП за счет увеличения использования пропускной способности, а установка значения -1 отключает сжатие. Установка более высокого значения также может навредить клиентам с медленными сетевыми соединениями. Если ваш сервер находится в сети с прокси-сервером или на той же машине (с задержкой менее 2 мс), отключение этой опции (-1) будет полезно, так как внутренние скорости сети обычно могут справиться с дополнительным несжатым трафиком.

purpur.yml use-alternate-keepalive Рекомендуемое начальное значение: true

Вы можете включить альтернативную систему keepalive в Purpur, чтобы игроки с плохим соединением не отключались так часто. Известная несовместимость с TCPShield.

Включение этой опции отправляет пакет keepalive раз в секунду игроку и отключает его только в том случае, если ни один из них не был получен в течение 30 секунд. Ответ на любой из них в любом порядке будет поддерживать соединение игрока. То есть, игроков не будет выбрасывать из-за потери одного пакета где-то в сети.~ Документация Purpur

 

Чанки

server.properties

simulation-distance Рекомендуемое начальное значение: 4

Расстояние симуляции - это расстояние в чанках вокруг игрока, которое сервер будет обсчитывать (тикать). По сути, это расстояние от игрока, на котором происходят различные события, такие как плавка в печах, рост урожая и саженцев и т.д. Эту опцию нужно специально установить на низкое значение, примерно 3 или 4, из-за существования view-distance. Это позволяет загружать больше чанков без их обсчета. Таким образом, игроки могут видеть дальше без значительного влияния на производительность.

view-distance Рекомендуемое начальное значение: 7

Это расстояние в чанках, которое будет отправлено игрокам, аналогично параметру no-tick-view-distance в Paper.

Общее расстояние обзора будет равно наибольшему значению между simulation-distance и view-distance. Например, если расстояние симуляции установлено на 4, а расстояние обзора - на 12, общее расстояние, отправляемое клиенту, будет 12 чанков.

spigot.yml

view-distance Рекомендуемое начальное значение: default

Это значение перезаписывает параметр из server.properties, если не установлено на значение default. Вы должны оставить его по умолчанию, чтобы иметь возможность управлять и расстоянием симуляции, и расстоянием обзора в одном месте для удобства управления.

paper-world configuration

delay-chunk-unloads-by Рекомендуемое начальное значение: 10s

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

max-auto-save-chunks-per-tick Рекомендуемое начальное значение: 8

Позволяет замедлить инкрементальное сохранение мира, распределяя задачу по времени для лучшей средней производительности. Вы можете установить это значение выше 8, если у вас более 20-30 игроков. Если инкрементальное сохранение не успевает завершиться вовремя, Bukkit автоматически сохранит оставшиеся чанки за раз и начнет процесс заново.

prevent-moving-into-unloaded-chunks

Рекомендуемое начальное значение: true

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

entity-per-chunk-save-limit

Рекомендуемые начальные значения:

  • area_effect_cloud: 8
  • arrow: 16
  • dragon_fireball: 3
  • egg: 8
  • ender_pearl: 8
  • experience_bottle: 3
  • experience_orb: 16
  • eye_of_ender: 8
  • fireball: 8
  • firework_rocket: 8
  • llama_spit: 3
  • potion: 8
  • shulker_bullet: 8
  • small_fireball: 8
  • snowball: 8
  • spectral_arrow: 16
  • trident: 16
  • wither_skull: 4

С помощью этой настройки вы можете установить лимиты на количество сущностей определенного типа, которые могут быть сохранены. Вы должны задать лимит хотя бы для каждого снаряда, чтобы избежать проблем с огромным количеством сохраняемых снарядов, что может привести к сбоям при загрузке сервера. Вы можете указать здесь любой идентификатор сущности, см. Minecraft Wiki, чтобы найти идентификаторы сущностей. Пожалуйста, настройте лимит по своему усмотрению. Рекомендуемое значение для всех снарядов — около 10. Вы также можете добавить другие сущности по их именам типов в этот список. Эта настройка не предназначена для предотвращения создания больших ферм мобов игроками.

pufferfish.yml

max-loads-per-projectile Рекомендуемое начальное значение: 8

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

Мобы

bukkit.yml

spawn-limits

Рекомендуемые начальные значения:

  • monsters: 20
  • animals: 5
  • water-animals: 2
  • water-ambient: 2
  • water-underground-creature: 3
  • axolotls: 3
  • ambient: 1

Математика ограничения мобов: [playercount] * [limit], где "количество игроков" — это текущее количество игроков на сервере. Логично, что чем меньше числа, тем меньше мобов вы увидите. Параметр per-player-mob-spawn накладывает дополнительный лимит, обеспечивая равномерное распределение мобов между игроками. Снижение этого значения — палка о двух концах; да, вашему серверу будет меньше работы, но в некоторых игровых режимах мобы, появляющиеся естественным образом, играют большую роль в игровом процессе. Вы можете снизить это значение до 20 или меньше, если правильно настроите mob-spawn-range. Установка меньшего значения mob-spawn-range создаст ощущение, что вокруг каждого игрока больше мобов. Если вы используете Paper, вы можете установить лимиты мобов для каждого мира в конфигурации paper-world.

ticks-per

Рекомендуемые начальные значения:

  • monster-spawns: 10
  • animal-spawns: 400
  • water-spawns: 400
  • water-ambient-spawns: 400
  • water-underground-creature-spawns: 400
  • axolotl-spawns: 400
  • ambient-spawns: 400

Эта опция устанавливает, как часто (в тиках) сервер пытается создать определенные живые сущности. Водные/окружающие мобы не нуждаются в спавне каждый тик, так как их обычно не убивают так быстро. Что касается монстров, небольшое увеличение времени между спавнами не должно повлиять на скорость спавна, даже в фермах мобов. В большинстве случаев все значения под этой опцией должны быть больше 1. Увеличение этого значения также позволяет вашему серверу лучше справляться с областями, где спавн мобов отключен.

spigot.yml

mob-spawn-range Рекомендуемое начальное значение: 3

Позволяет уменьшить диапазон (в чанках), в котором мобы будут спавниться вокруг игрока. В зависимости от игрового режима вашего сервера и количества игроков вы можете захотеть уменьшить это значение вместе с spawn-limits в bukkit.yml. Установка меньшего значения создаст ощущение, что вокруг вас больше мобов. Это значение должно быть меньше или равно вашему simulation distance и никогда не превышать ваш hard despawn range / 16

entity-activation-range

Рекомендуемые начальные значения:

  • animals: 16
  • monsters: 24
  • raiders: 48
  • misc: 8
  • water: 8
  • villagers: 16
  • flying-monsters: 48

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

entity-tracking-range

Рекомендуемые начальные значения:

  • players: 48
  • animals: 48
  • monsters: 48
  • misc: 32
  • other: 64

Это расстояние в блоках, на котором сущности будут видимы. Они просто не будут отправляться игрокам. Если значение установлено слишком низко, это может привести к тому, что мобы будут появляться внезапно рядом с игроком. В большинстве случаев это значение должно быть больше, чем ваше значение entity-activation-range.

tick-inactive-villagers Рекомендуемое начальное значение: false

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

nerf-spawner-mobs Рекомендуемое начальное значение: true

Позволяет сделать так, чтобы мобы, созданные спавнером, не имели ИИ. Отключенные мобы не будут выполнять никаких действий. Вы можете заставить их прыгать в воде, изменив параметр spawner-nerfed-mobs-should-jump на true в конфигурации paper-world.

paper-world configuration

despawn-ranges

Рекомендуемые начальные значения:

  • ambient:
    • hard: 72
    • soft: 30
  • axolotls:
    • hard: 72
    • soft: 30
  • creature:
    • hard: 72
    • soft: 30
  • misc:
    • hard: 72
    • soft: 30
  • monster:
    • hard: 72
    • soft: 30
  • underground_water_creature:
    • hard: 72
    • soft: 30
  • water_ambient:
    • hard: 72
    • soft: 30
  • water_creature:
    • hard: 72
    • soft: 30

Позволяет настроить диапазоны исчезновения сущностей (в блоках). Уменьшите эти значения, чтобы быстрее очищать мобы, которые находятся далеко от игрока. Вы должны держать мягкий диапазон около 30 и настроить жесткий диапазон чуть больше вашей фактической дистанции симуляции, чтобы мобы не исчезали сразу, как только игрок выходит за пределы загружаемого чанка (это хорошо работает благодаря параметру delay-chunk-unloads-by в конфигурации paper-world). Когда моб находится за пределами жесткого диапазона, он будет мгновенно исчезать. Когда между мягким и жестким диапазоном, он будет иметь случайный шанс на исчезновение. Ваш жесткий диапазон должен быть больше мягкого диапазона. Настройте это значение в соответствии с вашей дистанцией обзора, используя формулу (simulation-distance * 16) + 8. Это частично учитывает чанки, которые еще не были выгружены после того, как игрок их посетил.

per-player-mob-spawns Рекомендуемое начальное значение: true

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

max-entity-collisions Рекомендуемое начальное значение: 2

Переопределяет опцию с тем же именем в spigot.yml. Позволяет вам решить, сколько столкновений может обрабатывать одна сущность одновременно. Значение 0 приведет к невозможности толкать другие сущности, включая игроков. Значение 2 должно быть достаточным в большинстве случаев. Стоит отметить, что это сделает правило игры maxEntityCramming бесполезным, если его значение выше значения этой конфигурации.

update-pathfinding-on-block-update Рекомендуемое начальное значение: false

Отключение этой опции приведет к меньшему количеству вычислений путей, что повысит производительность. В некоторых случаях это может сделать мобы более лагучими; они будут пассивно обновлять свой путь каждые 5 тиков (0,25 сек).

fix-climbing-bypassing-cramming-rule Рекомендуемое начальное значение: true

Включение этой опции исправит проблему, при которой сущности не подчиняются правилу максимального количества нажатий при подъеме. Это предотвратит накопление большого количества мобов в маленьких пространствах даже при их подъеме (например, пауки).

armor-stands.tick Рекомендуемое начальное значение: false

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

armor-stands.do-collision-entity-lookups Рекомендуемое начальное значение: false

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

tick-rates

Рекомендуемые начальные значения:

  • behavior:
    • villager:
      • validatenearbypoi: 60
      • acquirepoi: 120
  • sensor:
    • villager:
      • secondarypoisensor: 80
      • nearestbedsensor: 80
      • villagerbabiessensor: 40
      • playersensor: 40
      • nearestlivingentitysensor: 40

Не рекомендуется изменять эти значения по умолчанию, если включен DAB Pufferfish!

Эти настройки определяют, как часто будут срабатывать указанные поведения и датчики в тиках. Параметр acquirepoi для жителей кажется самым тяжелым поведением, поэтому он был значительно увеличен. Уменьшите его в случае проблем с нахождением жителями своего пути.

pufferfish.yml

dab.enabled Рекомендуемое начальное значение: true

DAB (динамическая активация мозга) уменьшает количество тиков сущности по мере увеличения расстояния от игроков. DAB работает по градиенту, а не по жесткому порогу, как EAR. Вместо полного тика сущностей вблизи и редкого тика сущностей вдали, DAB уменьшает количество тиков сущности на основе расчета, зависящего от dab.activation-dist-mod.

dab.max-tick-freq Рекомендуемое начальное значение: 20

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

dab.activation-dist-mod Рекомендуемое начальное значение: 7

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

enable-async-mob-spawning Рекомендуемое начальное значение: true

Позволяет включить асинхронное появление мобов. Для этого должна быть включена настройка per-player-mob-spawns в Paper. Эта опция не делает появление мобов асинхронным, но переносит большую часть вычислительных операций, связанных с появлением новых мобов, на другой поток. Включение этой опции не должно быть заметно в обычной игре.

enable-suffocation-optimization Рекомендуемое начальное значение: true

Эта опция оптимизирует проверку удушья (проверку на нахождение моба внутри блока и нанесение ему урона от удушья) путем ограничения частоты проверки до тайм-аута урона. Эта оптимизация должна быть незаметна, если вы не являетесь технически подкованным игроком, использующим точное время тика для убийства сущности удушьем в нужный момент.

inactive-goal-selector-throttle Рекомендуемое начальное значение: true

Уменьшает частоту вызова AI goal selector для неактивных сущностей, заставляя их обновлять цель каждые 20 тиков вместо каждого тика. Это может улучшить производительность на несколько процентов и имеет незначительные геймплейные последствия.

purpur.yml

zombie.aggressive-towards-villager-when-lagging Рекомендуемое начальное значение: false

Включение этой опции заставит зомби перестать атаковать жителей, если TPS сервера ниже порога, установленного с помощью lagging-threshold в purpur.yml.

entities-can-use-portals Рекомендуемое начальное значение: false

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

villager.lobotomize.enabled Рекомендуемое начальное значение: true

Эта опция должна быть включена только в случае, если жители вызывают лаги! В противном случае проверки пути могут снизить производительность.

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

villager.search-radius

Рекомендуемые начальные значения:

  • acquire-poi: 16
  • nearest-bed-sensor: 16

Радиус, в пределах которого жители будут искать блоки рабочих мест и кровати. Это значительно улучшает производительность при большом количестве жителей, но не позволяет им обнаруживать блоки рабочих мест или кровати, находящиеся дальше указанного значения.

 

Misc

spigot.yml

merge-radius

Рекомендуемые начальные значения:

  • item: 3.5
  • exp: 4.0

Определяет расстояние между предметами и орбами опыта для их объединения, уменьшая количество тикающих предметов на земле. Установка этого значения слишком высоко приведет к иллюзии исчезновения предметов или орбов опыта по мере их объединения. Установка этого значения слишком высоко может нарушить работу некоторых ферм, а также позволить предметам телепортироваться через блоки. Проверки на предотвращение слияния предметов через стены не выполняются (если не активирована настройка Paper fix-items-merging-through-walls). Орбы опыта объединяются только при создании.

hopper-transfer Рекомендуемое начальное значение: 8

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

hopper-check Рекомендуемое начальное значение: 8

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

paper-world configuration

alt-item-despawn-rate

Рекомендуемые начальные значения:

  • enabled: true
  • items:
    • cobblestone: 300
    • netherrack: 300
    • sand: 300
    • red_sand: 300
    • gravel: 300
    • dirt: 300
    • short_grass: 300
    • pumpkin: 300
    • melon_slice: 300
    • kelp: 300
    • bamboo: 300
    • sugar_cane: 300
    • twisting_vines: 300
    • weeping_vines: 300
    • oak_leaves: 300
    • spruce_leaves: 300
    • birch_leaves: 300
    • jungle_leaves: 300
    • acacia_leaves: 300
    • dark_oak_leaves: 300
    • mangrove_leaves: 300
    • cactus: 300
    • diorite: 300
    • granite: 300
    • andesite: 300
    • scaffolding: 600

Этот список позволяет установить альтернативное время (в тиках) для исчезновения определенных типов выпавших предметов быстрее или медленнее, чем по умолчанию. Эта опция может использоваться вместо плагинов для очистки предметов вместе с merge-radius для улучшения производительности.

redstone-implementation Рекомендуемое начальное значение: ALTERNATE_CURRENT

Заменяет систему красного камня на более быструю и альтернативную версию, уменьшая количество обновлений блоков, которые сервер должен обрабатывать. Использование неванильной реализации может ввести небольшие несоответствия с очень техническим красным камнем, но прирост производительности значительно перевешивает возможные редкие проблемы. Неванильная реализация может дополнительно исправить другие несоответствия красного камня, вызванные CraftBukkit.

Реализация ALTERNATE_CURRENT основана на моде Alternate Current. Дополнительную информацию об этом алгоритме можно найти на странице ресурсов.

hopper.disable-move-event Рекомендуемое начальное значение: false

Событие InventoryMoveItemEvent не вызывается, если нет плагинов, активно слушающих это событие. Это означает, что вы должны установить это значение в true только если у вас есть такие плагины и вы не заботитесь о том, что они не смогут реагировать на это событие. Не устанавливайте в true, если вы хотите использовать плагины, которые слушают это событие, например, плагины защиты!

hopper.ignore-occluding-blocks Рекомендуемое начальное значение: true

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

tick-rates.mob-spawner Рекомендуемое начальное значение: 2

Эта опция позволяет настроить частоту тиков для спаунеров мобов. Более высокие значения означают меньше лагов, если у вас много спаунеров, хотя если установить слишком высокое значение (относительно задержки спаунера), скорость спауна мобов уменьшится.

optimize-explosions Рекомендуемое начальное значение: true

Установка этого значения в true заменяет ванильный алгоритм взрывов на более быстрый, с незначительной потерей точности при расчете урона от взрыва. Это обычно не заметно.

treasure-maps.enabled Рекомендуемое начальное значение: false

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

treasure-maps.find-already-discovered

Рекомендуемое начальное значение:

  • loot-tables: true
  • villager-trade: true

Значение по умолчанию этой опции заставляет новые карты искать независимые структуры, которые обычно находятся в еще не сгенерированных чанках. Установка этого значения в true делает так, чтобы карты могли вести к структурам, которые были обнаружены ранее. Если вы не измените это на true, вы можете столкнуться с зависанием сервера или его падением при генерации новых карт сокровищ. villager-trade используется для карт, обмениваемых деревенскими жителями, а loot-tables относится ко всему, что генерирует динамические добычу, такому как сундуки с сокровищами, подземные сундуки и т. д.

tick-rates.grass-spread Рекомендуемое начальное значение: 4

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

tick-rates.container-update Рекомендуемое начальное значение: 1

Время в тиках между обновлениями контейнера. Увеличение этого значения может помочь, если обновления контейнера вызывают проблемы (это случается редко), но усложнит игрокам взаимодействие с инвентарями (появление призрачных предметов).

non-player-arrow-despawn-rate Рекомендуемое начальное значение: 20

Время в тиках, после которого стрелы, выпущенные мобами, должны исчезнуть после попадания во что-то. Игроки все равно не могут их подобрать, так что вы можете установить это, например, в 20 (1 секунда).

creative-arrow-despawn-rate Рекомендуемое начальное значение: 20

Время в тиках, после которого стрелы, выпущенные игроками в креативном режиме, должны исчезнуть после попадания во что-то. Игроки все равно не могут их подобрать, так что вы можете установить это, например, в 20 (1 секунда).

pufferfish.yml

disable-method-profiler Рекомендуемое начальное значение: true

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

purpur.yml

dolphin.disable-treasure-searching Рекомендуемое начальное значение: true

Предотвращает дельфинов от выполнения поиска структур, аналогичного картам сокровищ.

teleport-if-outside-border Рекомендуемое начальное значение: true

Позволяет телепортировать игрока к мировому спауну, если он оказался за пределами границы мира. Это полезно, так как ванильная граница мира обходима

Helps

anti-xray.enabled Рекомендуемое начальное значение: true

Включите эту опцию, чтобы скрыть руды от игроков, использующих программы для просмотра сквозь блоки (x-ray). Для подробной настройки этой функции ознакомьтесь с руководством по настройке Anti-Xray. Хотя включение этой опции фактически снизит производительность, оно намного эффективнее любого плагина против x-ray. В большинстве случаев влияние на производительность будет незначительным.

nether-ceiling-void-damage-height Рекомендуемое начальное значение: 127

Если это значение больше 0, игроки выше заданного уровня y будут получать урон, как если бы они находились в пустоте. Это предотвратит использование игроками верхнего предела ада. Ванильный ад имеет высоту в 128 блоков, поэтому вы, вероятно, должны установить это значение на 127. Если вы изменяете высоту ада каким-либо образом, вам следует установить это значение на [ваша_высота_ада] - 1.

Java startup flags

Вот несколько рекомендованных флагов запуска Java для работы серверов Minecraft:

Используйте рекомендуемого поставщика Java: Убедитесь, что вы используете рекомендуемого поставщика Java, такого как Adoptium или Amazon Corretto. Избегайте Java от Oracle из-за изменений в лицензировании.

Конфигурация сборщика мусора: Настройте сборщик мусора для снижения проседаний производительности, вызванных большими задачами сборки мусора. Оптимизированные флаги запуска для серверов Minecraft можно найти на SOG. Однако имейте в виду, что эти рекомендации могут не работать с альтернативными реализациями JVM.

Используйте flags.sh для флагов запуска: Воспользуйтесь генератором флагов flags.sh для получения правильных флагов запуска для вашего сервера. Этот инструмент поможет вам создать оптимальные флаги, настроенные под требования вашего сервера.

Добавьте бета-флаг для улучшения производительности: Рассмотрите возможность добавления бета-флага --add-modules=jdk.incubator.vector перед -jar в ваши флаги запуска. Этот флаг позволяет Pufferfish использовать инструкции SIMD на вашем процессоре, что может улучшить производительность, ускоряя определенные математические операции. В настоящее время он в основном полезен для рендеринга карт плагинов в игре (например, imageonmaps), что потенциально увеличивает их скорость в 8 раз.

Следуя этим рекомендациям и используя соответствующие флаги запуска Java, вы можете оптимизировать производительность вашего сервера Minecraft и снизить возможные проседания производительности, вызванные задачами сборки мусора.

Plugins removing ground items

Абсолютно ненужные, так как их можно заменить с помощью параметров merge-radius и alt-item-despawn-rate, и, честно говоря, они менее настраиваемы, чем базовые конфигурационные файлы сервера. Они обычно используют больше ресурсов на сканирование и удаление предметов, чем простое игнорирование этих предметов.

Mob stacker plugins

Действительно сложно оправдать использование таких плагинов. Стекирование естественно появляющихся сущностей вызывает больше задержек, чем их отсутствие, поскольку сервер постоянно пытается создать больше мобов. Единственным "приемлемым" случаем использования является работа с мобильными спавнерами на серверах с большим количеством таких устройств.

Plugins enabling/disabling other plugins

Включение или отключение плагинов во время выполнения - это крайне опасно. Загрузка такого плагина может вызвать фатальные ошибки с отслеживанием данных, а отключение плагина может привести к ошибкам из-за удаления зависимостей. Команда /reload страдает от тех же проблем, и вы можете узнать больше об этом в блоге me4502.

What's lagging? - measuring performance

mspt

Paper предлагает команду /mspt, которая позволяет узнать, сколько времени серверу потребовалось для вычисления последних тиков. Если первое и второе значение, которые вы видите, меньше 50, то поздравляю! Ваш сервер не тормозит! Если третье значение превышает 50, то это означает, что был хотя бы один тик, который занял больше времени. Это совершенно нормально и иногда случается, так что не паникуйте.

Spark

Spark - это плагин, который позволяет профилировать использование процессора и памяти вашего сервера. Вы можете прочитать, как его использовать, на его wiki. Там также есть руководство о том, как найти причину лагов здесь.

Timings

Инструментом для определения причин задержек на сервере являются Timings. Timings - это инструмент, который позволяет увидеть, какие задачи занимают больше всего времени. Это самый базовый инструмент для устранения неполадок, и если вы просите помощи в связи с задержками, вас скорее всего попросят предоставить свои Timings. Известно, что Timings серьезно влияет на производительность серверов, поэтому рекомендуется использовать плагин Spark вместо Timings и использовать Purpur или Pufferfish для полного отключения Timings.

Чтобы получить Timings вашего сервера, вам просто нужно выполнить команду /timings paste и перейти по предоставленной ссылке. Вы можете поделиться этой ссылкой с другими людьми, чтобы они могли помочь вам. Однако его легко неправильно интерпретировать, если вы не знаете, что делаете. Есть подробное видеоурок от Aikar о том, как их читать.

Minecraft exploits and how to fix them

Чтобы узнать, как исправить уязвимости, которые могут вызывать проблемы с просадками производительности или сбоями на сервере Minecraft, обратитесь сюда.