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

Вот подробное руководство по оптимизации вашего сервера цапфы!
Имейте в виду, для оптимизации и стабилизации сервера стоит использовать инструмент  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