Оптимизация сервера
Вот подробное руководство по оптимизации вашего сервера цапфы!
Имейте в виду, для оптимизации и стабилизации сервера стоит использовать инструмент Spigot Timings собирая статистику при максимальной нагрузке на сервер.
1. PaperSpigot & paper.yml
PaperSpigot представляет собой набор патчей для ядра Spigot которые существенно оптимизирует сервер и добавляет дополнительные настройки с помощью файла paper.yml.
Вы можете скачать PaperTools, который является эквивалентом BuildTools по данной ссылке:
Запустите paperspigot.jar, как вы это делаете с обычным ядром spigot.jar (собственно PaperSpigot и является ядром сервера) .
После запуска, сервера сгенерирует в корневой папке три yaml файла:
spigot.yml
paper.yml
bukkit.yml
Используя эти файлы мы и будем вести настройку.
Для начала откройте paper.yml:
Следует снизить параметр despawn-ranges, если у вас слишком много мобов (в противном случае оставьте это по умолчанию).
Измените значение на true следующих параметров:
use-async-lighting
optimize-draining
Это позволит оптимизировать параметры потока жидкости и обрабатывать освещение асинхронно.
Примечание: Некоторые из этих параметров были вырезаны в paperspigot, в более поздних версиях и больше не настраиваются в конфигурационном файле (как они всегда активированы).
Если у вас на сервере совершается много действий с redstone схемами, воронками, вагонетками... еtс , снижение параметра tick-next-tick-list-cap может помочь в повышении производительности.
2. Spigot.yml & Bukkit.yml
Spigot.yml & bukkit.yml являются файлами, которые генерирует сервер Bukkit/Spigot умолчанию. Они позволяют нам настроить такие параметры как: лимит сущностей(entity), кол-во сущностей(entity) за тик, обработку мира и другое.
Откройте spigot.yml. Здесь мы сможем выжать максимум производительности из сервера. Найдите раздел "world-settings".
Во-первых, отключите анти-Xray, если вы действительно им не пользуетесь. Обычно данная функция аказывает до 5% нагрузки на сервер. Это не самый прожорливый функционал, но его отключение может дать серьезный прирост производительности.
Вы можете попробовать в качестве альтернативы более конфигурируемый анти-Xray, например.
Параметр: nerf-spawner-mobs может быть установлен на true, если ваш сервер не полагаться на агрессивных мобов, которые появляются с помощью спаунеров. Если у вас есть много спаунеров нейтральных мобов (фермы и тд) и вы редко используете спаунеры агрессивных, активация этой функции даст серьезное увеличение производительности.
entity-activation-range
Стандартные значения: (animals: 32, monsters: 32, misc: 16)
Описание: Устанавливает радиус в блоках, в пределах которых сущности будут "активными" - объекты за пределами этого диапазона будет тикать по сниженному рейту, чтобы предотвратить сервера отставание.
Я предлагаю использовать такие параметры:
entity-activation-range:
animals: 8
monsters: 10
misc: 2
Misc регулирует радиус элементов рам, картин, выброшенных предметов, шаров опыта и табличек. Я установил этому параметру значение "2", для предотвращения их движения по воде. Параметры animals: 8 monsters: 10 не означают что мобы будут выгружены, они будут активны(за один тик), но с более низким рейтом (читаем подробнее, что такое тик).
entity-tracking-range
Стандартные значения: (players: 48, animals: 48, monsters: 48, misc: 32, other: 64)
Устанавливает радиус в блоках, в пределах которых сущности будут видимыми для клиента. Субъекты за пределами этого диапазона будут невидимы и не будут обработаны железом клиента чтобы сохранить загрузку процессора и пропускную способность. Это особенно полезно для ПВП серверов, а снижение параметров для игроков исключит wallhacks и радар в некоторой степени. Misc регулирует радиус элементов рам, картин, выброшенных предметов, шаров опыта и табличек. Other устанавливает максимальный предел для всех субъектов на вашем сервере.
entity-tracking-range: не влияет на производительность сервера, но влияет производительность на стороне клиента. Я хотел бы предложить оставить его нетронутым.
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
ticks-per:
↳ hopper-transfer
Стандартное значение: 8
Описание: Период времени в 1 тик, между тем как воронка активируется и перетянет вещи в сундук. При стандартном значении воронка активируется и перетаскивает в сундук предметы раз в 8 тиков.
↳ hopper-check (Удалено в версии 1.8.3 March, 8th 2015)
Стандартное значение: 8
Описание: Период времени в 1 тик, - за который воронка анализирует кол-во предметов вокруг нее. К примеру при значении 8, воронка будет проверять инвентарь сундука и наличие предметов вокруг нее раз в восемь тиков.
Значение по умолчанию равно 8, поэтому установка его в 24 означает, что процесс активации будет происходить в три раза реже. Что сократит общее время активности воронок. (внимание изменение данной функции может привести к неправильной работе некоторых механизмов, которые строят ваши игроки)
Я советую установить вот такие значения:
ticks-per:
hopper-transfer: 24
hopper-check: 24
hopper-amount: 3
max-entity-collisions
Стандартное значение: 8
Описание: Данный параметр устанавливает лимит сущностей в одной точке, я предлагаю установить значение 2 или даже 1.
item-despawn-rate
Стандартное значение: 6000
Описание: Данный параметр устанавливает время в тиках, по прошествии которого брошенные на землю предметы исчезнут.
При стандартном значении предметы будут исчезать через 6000:20=300 секунд. Данный параметр регулируется индивидуально для каждого сервера.
merge-radius:
↳ exp
Стандартное значение: 3.0
Описание: Устанавливает радиус в блоках, когда шарики опыта будут объединены в один стак.
↳ item
Стандартное значение: 2.5
Описание: Устанавливает радиус в блоках, когда предметы одной группы будут объединены в один стак.
Предлагаю вот такие параметры:
merge-radius:
item: 4
exp: 6
view-distance
Стандартное значение: 10
Описание: Контролирует количество блоков, которые будут загружены вокруг каждого игрока. Это значение не может быть выше , чем 15 или ниже , чем 1. Понижение это может снизить нагрузку на сервер , если у вас есть большое количество игроков онлайн.
Я советую установить данный параметр на "4", но в таком случае могут возникнуть проблемы при прогрузке блоков для креатив серверов. Все же лучше не выходить за значение "6". Данный параметр оказывает значительную нагрузку на сервер
chunks-per-tick
Стандартное значение: 650
Описание: Контролирует количество чанков, которые будут обновлены для роста культур(фермерам на заметку) за один тик . Снижение этого параметра уменьшает нагрузку на сервер и замедляет рост культур соответственно. Я предлагаю установить значение "80" что примерно в восемь раз ниже.
growth:
↳ x-модификатор
где x это = cactus, melon, pumpkin, sapling, cane, mushroom, wheat
Стандартное значение: 100
Type: Integer
Описание: Контролирует скорость роста определенной культуры.
При снижении параметра chunks-per-tick в восемь раз до 80, мы увеличим значения роста каждой культуры до "800" ( восемь раз соответственно) что даст нам стандартную скорость роста, при этом сократив кол-во обновленных чанков.
Устанавливаем параметры на:
growth:
cactus-modifier: 800
cane-modifier: 800
melon-modifier: 800
mushroom-modifier: 800
pumpkin-modifier: 800
sapling-modifier: 800
wheat-modifier: 800
Помните, что параметры chunks-per-tick и growth взаимосвязаны и если вы уменьшили кол-во обновленных чанков, при этом оставив без изменения параметр growth(100) то вы снизите скорость роста в восемь раз и наоборот.
Переходим к файлу bukkit.yml
Параметр spawn-limits. Отвечает за общее кол-во мобов, которые будут отспаунены для одного игрока. Я предлагаю такие значения:
spawn-limits:
monsters: 50
animals: 10
water-animals: 3
ambient: 4
Я снизил параметр ambient: 4, тк. Кол-во летучишь мышей никак не влияет на геймплей.
Чем больше игроков играют на сервере, тем ниже можно опускать данные значения повышая при этом производительность сервера.
Также рекомендую установить значения параметра ticks-per:
ticks-per:
animal-spawns:400
monster-spawns: 3
autosave: 3000
В частности, я изменил monster-spawns с 1 до 3. Это интервал между событием mobSpawn , который будет определять места и порождать монстров . Если mobSpawn собирает много циклов в ваших таймингах советую увеличить данные значения!
chunk-gc это небольшая функция spigot которая отключена по умолчанию. Для включения, установите параметры:
chunk-gc:
period-in-ticks: 300
load-threshold: 300