[Перевод] Руководство по оптимизации сервера Pufferfish

Руководство [Перевод] Руководство по оптимизации сервера Pufferfish

Поддерживаемые версии
  1. 1.16
  2. 1.17
  3. 1.18
Оригинал
Руководство по оптимизации сервера Pufferfish
Прежде всего, следует помнить, что не существует "лучшей" конфигурации. Лучший способ использовать это руководство - настроить указанные значения по своему вкусу. Если значение не указано, рекомендуется оставить его по умолчанию. Кроме того, уменьшать значения, указанные в данном руководстве, следует только в том случае, если у вас действительно есть проблемы с производительностью. Уменьшение значений здесь повлияет на игровой процесс и может испортить впечатления игроков. Если ваш сервер не лагает, то вам не следует уменьшать никаких значений. Также рекомендуется следовать этому руководству постепенно, внося лишь несколько изменений за один раз, пока проблема лага не исчезнет. Если проблема с лагами возникнет вновь, вы всегда сможете скорректировать значения позже.

Ядро сервера
Один из самых простых способов улучшить производительность вашего сервера - использовать наиболее оптимизированное серверное ядро.
Мы рекомендуем наш собственный форк Paper под названием Pufferfish, который можно скачать здесь. Вы также можете найти наш исходный код онлайн и присоединиться к серверу discord для получения поддержки и уведомлений о любых важных обновлениях. Это руководство также применимо, если вы используете другие форки, такие как Paper или Purpur.

Нужно еще более быстрое ядро? Pufferfish+ - это форк Pufferfish с еще большим количеством улучшений производительности, доступный исключительно для клиентов Pufferfish Host. Узнайте, как установить Pufferfish+.

Настройки чанка
server.properties - view-distance: 7 Опция view distance является наиболее влиятельной на производительность сервера. Этот параметр определяет, сколько чанков сервер будет загружать вокруг игроков, которые игроки смогут видеть. Для серверов с числом игроков менее 10, установка значения на 10 или выше может быть приемлемой. Для серверов с более чем 100 игроками может потребоваться снижение этого значения до 5 или, возможно, даже ниже. Этот параметр никогда не должен быть уменьшен ниже 3.

server.properties - simulation-distance: 5 Расстояние симуляции контролирует, сколько чанков вокруг игрока будет тикать. Если вы не хотите уменьшать расстояние просмотра еще больше, но хотите избежать отставания чанков, уменьшение этого параметра может помочь. Вы никогда не должны устанавливать этот параметр выше, чем расстояние просмотра,
это связано с тем, что игра активно управляет множеством мобов и других сущностей в указанных чанках, даже когда игроки не находятся рядом с ними, и это значительно снижает мощность процессора по сравнению с визуальным рендерингом, обрабатываемым расстоянием рендеринга.

paper.yml - prevent-moving-into-unloaded-chunks: true Эта опция не позволит игрокам входить в разгруженные чанки, телепортируя их обратно. Если бы это было разрешено, это вызвало бы всплеск задержки, так как сервер загрузил бы чанк в основном потоке (так называемая синхронная загрузка). Загрузка чанков занимает значительное время, поэтому лучше позволить загрузке чанков происходить в асинхронных потоках.

paper.yml - use-faster-eigencraft-redstone: true Если опция включена, она заменяет ванильный алгоритм redstone на гораздо более быстрый алгоритм. Не было практически никаких сообщений о том, что это ломает Redstone-конструкции, работающие на ванильных серверах.

paper.yml - grass-spread-tick-rate: 4 Этот параметр контролирует скорость распространения травы/мицелия. Серверы с большим количеством загруженных чанков могут иметь негативное влияние на производительность из-за такого поведения, поэтому уменьшение частоты этого параметра может улучшить производительность. Это может привести к тому, что трава будет распространяться медленнее.

Настройка сущностей
bukkit.yml - spawn-limits Эта опция контролирует количество мобов на одного игрока, которых будет порождать сервер. Если у вас слишком много сущностей, настройка этого раздела - простой способ уменьшить их количество. Наиболее значимым изменением является лимит монстров. Крупные серверы могут уменьшить это значение до 20 или ниже, в то время как небольшие серверы могут увеличить его до 50 или выше. Значение по умолчанию равно 70. Вы захотите настроить это значение для своего сервера, но некоторые рекомендуемые значения приведены ниже:

monsters: 30 animals: 10 water-animals: 5 water-ambient: 3 water-underground-creature: 3 axolotls: 3 ambient: 2

spigot.yml - mob-spawn-range: 3 Этот параметр контролирует максимальное расстояние от игрока, на котором будут спауниться мобы, в кусках. Вы должны варьировать это значение с настройками ограничений спавна, показанными выше, уменьшая его при уменьшении ограничений спавна и увеличивая при увеличении ограничений спавна. Это сделает спавн мобов более нормальным для игрока, даже если лимиты спавна уменьшены, так как количество мобов будет больше сосредоточено на игроке.

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

spigot.yml - entity-tracking-range Конфигурация по умолчанию для этой опции подходит для большинства серверов, но ее стоит упомянуть для особенно больших серверов. Если spark/timings показывает, что трекер сущностей составляет значительную часть задержки сервера, то уменьшение диапазона отслеживания в этом разделе конфигурации может снизить влияние трекера сущностей на производительность. Эта опция не влияет на спавн мобов или тикинг мобов, а скорее на расстояние, на котором мобы становятся видимыми для игроков. Будьте осторожны, уменьшая значения слишком сильно, так как слишком агрессивная настройка этих значений может привести к появлению мобов из ниоткуда.

spigot.yml - nerf-spawner-mobs: true При значении true у всех мобов, появляющихся из спавнеров, будет эффективно удален ИИ. Вы можете установить значение false, чтобы сохранить опыт игроков. Серверы, предоставляющие игрокам возможность строить огромные фармилки с помощью спавнеров, должны всегда устанавливать этот параметр в true.

paper.yml - max-entity-collisions: 2 Эта опция уменьшит объем работы сервера по вычислению столкновений между сущностями.

paper.yml - update-pathfinding-on-block-update: false Эта опция предотвратит повторный расчет путей сущностей при изменении блока. Мобы могут выглядеть немного более заторможенными с отключенной опцией, так как их поиск пути не будет обновляться немедленно при изменении окружения, но влияние обычно достаточно мало, чтобы не быть замеченным игроками.

paper.yml - fix-climbing-bypassing-cramming-rule: true При включении этой опции будет исправлена ошибка в Minecraft, когда правило maxEntityCramming не действует на существ на лестницах/винтах. Это нарушает ванильное поведение, но может помешать игрокам складывать тонны сущностей в одном месте.

paper.yml - armor-stands-do-collision-entity-lookups: false Эта опция, если она отключена, не позволит стойкам брони участвовать в столкновениях с другими сущностями. Это может уменьшить влияние некоторых лаг-машин, когда игроки складывают большое количество стоек брони в одном месте, чтобы затруднить серверу расчеты столкновений.

paper.yml - mob-spawner-tick-rate: 2 Эта опция контролирует частоту, с которой спавнеры будут пытаться породить мобов. Значение 2 практически невозможно заметить игроку. Если в вашем мире много спавнеров, вы можете увеличить это число до 4, но лучше не увеличивать его, так как это может снизить частоту спавна.


pufferfish.yml - enable-async-entity-tracker: true (эксклюзив Pufferfish+) Эта опция, доступная только в Pufferfish+, включает новую реализацию трекера сущностей, который обрабатывает логику отслеживания сущностей в асинхронном потоке. Из-за внутренних ограничений сервера плагины не смогут прослушивать событие скорости игрока, если эта опция включена. Кроме того, состояние сущности может временно десинхронизироваться, но это должно автоматически разрешиться. Эта опция значительно повышает производительность на серверах с большим количеством сущностей, особенно когда многие игроки находятся в непосредственной близости друг от друга, например, на серверах событий.

Конфигурация DAB
DAB - это важная часть ядра Pufferfish, которая уменьшает частоту тиков сложного ИИ. DAB влияет на тиканье деревенских жителей, зомбированных пиглинов, аксолотлей, хоглинов и козлов (по состоянию на Minecraft 1.18). Когда сущности находятся рядом с игроком, они будут тикать как обычно, но чем дальше от игрока, тем медленнее будет тикать их ИИ. Значения настраиваются таким образом, чтобы обеспечить максимальную производительность при минимальном влиянии на опыт игрока. DAB может повлиять на фермы мобов игроков, поэтому в этом случае стоит увеличить параметр activation-dist-mod или вообще отключить DAB.

pufferfish.yml - dab.activation-dist-mod: 8 Это значение определяет, как быстро эффект от DAB ослабевает с расстоянием. Значение по умолчанию 8 является достаточным для большинства серверов. Серверы с большим количеством жителей могут выиграть, если уменьшить это значение до 7, но никогда не следует уменьшать его ниже 6. Если у вас небольшой сервер, вы можете увеличить это значение до 10 или просто отключить DAB.

pufferfish.yml - dab.blacklisted-entities Если вы не хотите, чтобы на какую-либо сущность воздействовал DAB, вы можете добавить ее имя в этот список.

Разное
paper.yml - nether-ceiling-void-damage-height: 127 Когда игрокам разрешено летать на крыше незера, они могут бесконечно бродить без препятствий, что может привести к генерации огромного количества чанков. Если вы задали пользовательскую высоту крыши, укажите ее здесь.

paper.yml - optimize-explosions: true Эта опция включает более оптимизированный алгоритм расчета воздействия взрывов. Хотя заметить это крайне сложно, этот алгоритм дает результаты, которые отличаются от ванильных. Рекомендуется включить эту опцию, особенно если TNT часто используется на вашем сервере.

paper.yml - enable-treasure-maps: false Карты сокровищ плохо реализованы mojang и будут вызывать всплеск задержки на несколько секунд, пока они генерируются. Если они не являются важной частью вашего сервера, рекомендуется отключить их.

pufferfish.yml - enable-books: false Книги являются распространенной целью для методов эксплуатации, и в прошлом они использовались для различных неприятных вещей, включая эксплойты дублирования, эксплойты краха и принуждение серверов к исчерпанию памяти при создании огромного количества данных в виде чанков. Настоятельно рекомендуется отключать книги на публичных серверах. На частных серверах с доверенными игроками книги можно оставить включенными.

server.properties - network-compression-threshold В зависимости от вашей ситуации, есть два возможных значения, которые вы должны выбрать для этого параметра. Если вы используете сервер за прокси-сервером типа velocity, bungeecord или waterfall, вам следует установить значение -1, чтобы отключить сжатие. Если вы не используете velocity, bungeecord или waterfall следует установить значение 256.

Мифы и заблуждение
"Моб стакеры это плохо!" - Факт, но только иногда. Хотя использование плагинов для стаканье мобов на естественно порожденных мобах - очень плохая идея, использование этих плагинов на мобах, порожденных спаунерами, как правило, хорошая идея. Если вы используете эту стратегию для контроля численности мобов в спавнерах, поищите плагин stacker, который отключает спавнеры, когда рядом находятся большие стаки мобов.

"Lagassist/Clearlagg" - миф. Глобальная очистка предметов с земли - плохая идея. Предметы на земле не только редко вызывают проблемы с производительностью, но и сервер сам очистит их без вмешательства. Если вы хотите, чтобы это происходило быстрее, вы можете воспользоваться опцией alt-item-despawn-rate в paper.yml. Использование этих плагинов для удаления мобов также является плохой идеей, так как это только заставляет сервер выполнять дополнительную работу. Сразу после удаления мобов серверу придется выполнить тонну дорогостоящих вычислений, чтобы определить, где спаунить новых мобов.

"Переключиться на GraalVM/Zulu/Corretto/..." - Миф, в основном. Хотя эти JVM могут повысить производительность для некоторых типов рабочих нагрузок, по большей части они никак не улучшают производительность Minecraft. GraalVM, например, улучшит производительность, только если вы полагаетесь на запуск Javascript внутри вашего сервера. Для подавляющего большинства серверов, которые не делают этого, вы получите более стабильную и последовательную работу, если будете придерживаться реализаций JVM от Oracle или Adoptium.


Другие советы

  • Отключите тайминги! Функция тайминга, встроенная в бумагу, является хорошим диагностическим инструментом, но она оказывает очень большое влияние на производительность. Это происходит из-за того, что таймингу приходится постоянно запускать и останавливать виртуальный "секундомер". Эта операция может выполняться более 100 000 раз за такт. Это требует переключения контекста, что очень дорого. Большинство серверов умеренного размера могут рассчитывать на 20-процентное повышение производительности за счет отключения таймингов, а крупные серверы могут получить 40-процентное и более повышение. Эту функцию можно отключить, установив параметр timings.enabled в paper.yml. Если она отключена, ее можно снова включить в игре при необходимости с помощью команды /timings on.
  • Используйте spark для отладки проблем с производительностью. Spark - это альтернатива Timings, которая не имеет недостатка в том, что вызывает большое количество задержек. Он также предоставляет гораздо более подробную и точную информацию, которую можно более точно использовать для оценки влияния производительности.
  • Избегайте "экзотических" развилок. Форки, расположенные ниже Pufferfish/Purpur/Paper, часто страдают от проблем со стабильностью, не обеспечивая реального улучшения производительности. Эти форки также редко тестируются на предмет влияния на производительность (если вообще тестируются) и в некоторых случаях могут даже снижать производительность.

    Оригинал
Автор
XKrivakorX
Просмотры
4,294
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу