Как оптимизировать сервер? Подробный гайд!
Многие при создании серверов, сталкивались с проблемой высокого потребления ОЗУ и CPU, в этой статье подробно описано, как снизить это потребление, почти не теряя функционал и комфорт игроков!
- Выбор ядра сервера.
- Плагины
- Хорошие плагины
- Плохие плагины
- Оптимизация ядра и его конфигураций
- server.properties
- spigot.yml
- bukkit.yml
- purpur.yml
- pufferfish.yml
- paper-global.yml
- paper-world-defaults.yml
Выбор ядра сервера.
Выбор ядра сервера очень важный аспект при создании, и от себя хотел бы порекомендовать три ядра!
- PurPur --> Одно из самых популярных вариантов, очень гибкое и оптимизированное ядро!
- Paper --> Так же популярное ядро, имеет более простую конфигурацию, и подойдет для начинающих серверов и создателей, так же хорошо оптимизированное.
- Patina --> Относительно новое ядро, не столь популярное как вышеперечисленные, но если хотите попробовать что-то новенькое, то стоит поставить это ядро!
Плагины
Плагины, основа того, от чего будет зависеть нагрузка на ваш сервер, сколько он будет занимать RAM, и использовать CPU, в списке ниже я приведу примеры плагинов которые стоит использовать и те плагины которые лучше обходить стороной.
Хорошие плагины
- Chunky - Плагин для прогрузки чанков на карте, хоть он и не совсем относится к снижению потребления ОЗУ, но на него в том числе влияет, плагин позволяет прогружать чанки мира заранее, что значительно снижает потребление CPU, и частично потребление ОЗУ.
- Spark - Плагин позволяющий отслеживать состояние сервера постоянно! Позволяет диагностировать ошибки с производительностью, памятью и смотреть что больше всего нагружает сервер, количество мобов, и многое другое, наш гайд по плагину Spark.
Плохие плагины
- CoreProtect - Сам плагин хороший, логирует все действия игроков, позволяет откатить действия игроков, и так далее, но этим логированием довольно неплохо нагружает сервер, если в нем нет сильной необходимости, то советую его удалить.
- PlugManX - Плагин так же хороший, радует своим функционалом, позволяя запускать плагины не перезагружая сервер, выключать их, перезапускать, но это имеет плохие последствия, плагины при такой перезагрузке могут выдать фатальную ошибку, повредиться, и вовсе не сохранить некоторые данные. (К этому же плагину относиться команда /reload)
- AutoSaveWorld - Ненужный плагин, как и все его аналоги, и не имеет в себе какого то особого функционала, так как эта функция встроена в ядро сервера, в файле bukkit.yml
- HideStream - Плагин который отключает сообщения о смерти, входе/выходе игрока, о сообщении при кике игрока, не имеет в себе смысла, лишь ест лишние ресурсы сервера, все это можно настроить в файлах сервера.
- Так же хочу добавить пару советов, не используйте плагины от разных студий, которые предлагают функционал по типу "Кейсы как на фантайме!", "Мистики как на фантайме", в основном они написаны не качественно, из-за чего могут вызывать ошибки, и оптимизации там так же нет, не говоря уже о вредоносном коде который может быть в подобных плагинах.
Старайтесь минимизировать количество плагинов на вашем сервере,
дабы сохранить ресурсы сервера и совместимость остальных плагинов.
Оптимизация ядра и его конфигураций
Ядро так же требует индивидуальной настройки под каждый сервер, его необходимости, сейчас я расскажу что за что отвечает, и покажу оптимальные настройки важных пунктов.
server.properties
- Наименьшее значение означает большее сжатие трафика и увеличение нагрузки на процессор, но положительно сказывается на игроках с плохим интернетом.
network-compression-threshold=128/256/512
view-distance=6
- Абсолютно ненужная функция, хоть и не влияет на ресурсы, но лучше отключить, так как может вызывать ошибку у плагина WorldEdit и WorldGuard при затрагивании защищённой территории.
spawn-protection=0
spigot.yml
merge-radius: exp: 5.75 item: 3.5
mob-spawn-range: 3-4
- Увеличивает время для проверки сервером, декоративных сущностей по типу — арморстендов, картин, рамок и так далее. (При большем значении может вызвать небольшие визуальные баги)
hanging-tick-frequency: 100/150/200/250
save-user-cache-on-stop-only: true
arrow-despawn-rate: 300
trident-despawn-rate: 600
- Полная настройка воронок на сервере, нужное значение зависит от количества игроков и воронок на сервере.
hopper-amount: 3-9 hopper-transfer: 8-24 hopper-check: 8-24
- Убирает ИИ у мобов которые спавнятся с спавнеров, очень полезно для серверов где используются фармилки, фермы, спавнера.
nerf-spawner-mobs: true
log-villager-deaths: false
log-named-deaths: false
- Ограничивает максимальное количество взрывов динамита на тик.
(Устанавливайте нужное вам число в зависимости от типа сервера)
max-tnt-per-tick: 10-50
max-tick-time: tile: 8 entity: 16
bukkit.yml
query-plugins: false
period-in-ticks: 300
- Автоматическое сохранение данных сервера (в тиках)
Если сервер работает нестабильно, лучше не трогать.
autosave: 6000/16000
- Время в тиках, через которое сервер будет спавнить определённую группу существ.
Если нужен более ванильный геймплей - ставьте первые числа,
Если нужно больше производительности - вторые.
ticks-per: animal-spawns: 400/420 monster-spawn: 10/12 water-spawns: 600/800 axolotl-spawns: 400/600 water-ambient-ambient: 600/800 water-underground-creature-spawns: 400/600 ambient-spawns: 1800/2200
spawn-limits: monsters: 20 # Враждебные мобы. animals: 8 # Мирные мобы. water-animals: 3 # Водные существа (спруты, дельфины) water-ambient: 1 # Мелкие рыбы axolotls: 3 # Аксолотли water-underground-creature: 3 # Подземные спруты ambient: 1 # Летучие мыши
purpur.yml
- Позитивно влияет на игроков с плохим интернетом, оттягивая время их кика из-за плохого подключения. (Несовместимо с TCPShield)
use-alternate-keepalive: true
dont-send-useless-entity-packets: true
max-joins-per-second: true
breeding-delay-ticks: 12000
- Исправляет ошибку MC-3304.
fix-projectile-looting-transfer: true
- Выключает обновление нотных блоков, грибов, хорусов.
Лучше не трогать, если сервер больше склонен к ванильной игре
(Рекомендуется к отключению разработчиком LoneDev при использовании ItemsAdder)
disable-mushroom-updates: true disable-note-block-updates: true disable-chorus-plant-updates: true
disable-give-dropping: true
fix-stuck-in-portal: true
- Выключает падение предметов из сущностей которые умирают от удушения.
Будет полезно, если игроки строят слишком много ферм, работающих таким образом.
disable-drops-on-cramming-death: true
- При любом движении уже приземлившейся стрелы, её таймер
на исчезновение не будет обновляться. (Фиксит некоторые лаг-машины)
arrow:movement-resets-despawn-counter: false
invulnerable-while-accepting-resource-pack: true
sleep-ignore-nearby-mobs: true
- Данная настройка запретит сущностям использовать порталы.
То-есть игроки не смогут сделать загрузчик чанков.
Не рекомендуется, если игрокам нужно перемещать мобов через миры.
entities-can-use-portals: false
logger: suppress-init-legacy-material-errors: true suppress-ignored-advancement-warnings: true suppress-unrecognized-recipe-errors: true suppress-setblock-in-far-chunk-errors: true suppress-library-loader: true
- По сути, отключает возможность сделать лаг-машины на движущихся стойках для брони. (Читайте текст после # )
armorstand: step-height: 0.0 # высота ^прыжка^ стойки, может быть полезно для сторонних плагинов (например на транспорт) set-name-visible-when-placing-with-custom-name: true # имя переименнованой стойки будет видно при установке fix-nametags: true # позволяет переименовывать стойки с помощью бирки can-movement-tick: false # запрещает стойкам двигаться can-move-in-water: false # запрещает стойкам двигаться по воде can-move-in-water-over-fence: false # запрещает стойкам двигаться по воде через заборы place-with-arms-visible: true # стойки будут ставиться с видимыми руками
dolphin: disable-treasure-searching: true
snow_golem: leave-trail-when-ridden: false #Снежные големы не будут оставлять за собой след снега. min-shoot-interval-ticks: 300 #Снежные големы будут стрелять раз в 10 секунд, вместо раза в секунду. max-shoot-interval-ticks: 300
squid: immune-to-EAR: false
spider: can-climb-world-border: false
villager: brain-ticks: 32 use-brain-ticks-only-when-lagging: true # Житель будет активничать только раз в 32 тика при значении ТПС ниже чем в lagging-threshold. breeding-delay-ticks: 12000 allow-trading: true # Если значение false то жители не будут торговать с игроком. lobotomize: enabled: true check-interval: 100 display-trade-item: false # Отключает отображение предмета для продажи. Оптимизация. spawn-iron-golem: # Лимит количественного спавна железных големов на определенный радиус. radius: 5 limit: 5
- Настройка скорости исцеления зомби-жителя.
Ради удобства игроков и меньшего удержания агрессивного моба в памяти сервера.
zombie_villager: curing_time: min: 1300 max: 3000 cure: enabled: true #Если значение false - выключает возможность исцелить зомби-жителя.
zombie: aggressive-towards-villager-when-lagging: false
pufferfish.yml
Хочу отметить что настройки pufferfish.yml являются достаточно сбалансированными, и оптимизированными, не стоит их менять если нет проблем с производительностью!
- Устанавливаем максимальное время жизни для некоторых сущностей.
Может помочь избежать лаг-машин на снежках и яйцах.
entity_timeouts: SNOWBALL: 200 EGG: 200 LLAMA_SPIT: 40 FIREBALL: 100 DRAGON_FIREBALL: 100
- Указывает, сколько любой снаряд может загрузить чанков за время своего существования.
Полезно, но может вызывать застревающие в чанках трезубцы, стрелы и тому подобное.
max-loads-per-projectile: 4-6
- Указывает насколько далеко сущность должна находится от игрока, чтобы DAB начал работать. (DAB простыми словами - оптимизация жителей)
start-distance: 6-8
- Указывает раз в сколько тиков будут обновляться самые дальние от игрока сущности.
Негативно сказывается на различных фермах.
max-tick-freq: 35-40
activation-dist-mod: 7
paper-global.yml
- Выключает автоматический сбор таймингов после старта сервера.
Используйте Spark для поиска проблем с производительностью.
В новых версиях ядра Purpur функция удалена.
timings: enabled: false verbose: false
use-rgb-for-named-text-colors: false
max-joins-per-tick: 1
- Исправляет баг MC-4 связанный с синхронизацией лежащих предметов у игрока и сервера.
fix-entity-position-desync: true
- Должны ли фантомы, странствующие торговцы и т. д. появляться в пользовательских мирах. По умолчанию false, что-бы соответствовать поведению Vanilla
use-dimension-type-for-custom-spawners: true
- Использовать альтернативную формулу удачи, позволяющую применять удачу к предметам, не имеющим определенного качества. Вносит существенные изменения в формулы рыбалки. (На свое усмотрение)
use-alternative-luck-formula: true
chunk-system: gen-parallelism: default io-threads: -1 # Значение -1 означает что сервер будет потреблять половину доступных ресурсов worker-threads: -1 # Укажите количество доступных вашему серверу ядер процессора (как минимум одно ядро оставляйте свободным для системы)
paper-world-defaults.yml
despawn-ranges: ambient: hard: 56 soft: 30 axolotls: hard: 56 soft: 30 creature: hard: 56 soft: 30 misc: hard: 56 soft: 30 monster: hard: 56 soft: 30 underground_water_creature: hard: 56 soft: 30 water_ambient: hard: 56 soft: 30 water_creature: hard: 56 soft: 30
- Делает попугаев "липкими", что-бы они не падали с плеча игрока, когда он движется. Используйте приседание что-бы стряхнуть их
parrots-are-unaffected-by-player-movement: true
- Количество курсоров (маркеров), разрешенных на карту. Большое количество курсоров может использоваться для задержки клиентов
item-frame-cursor-limit: 64
- Задерживает выгрузку чанка на указанное время. Форматируется как длительность с одной единицей, например 10 ч или 25 мин.
Поддерживает d, h, m, s.
delay-chunk-unloads-by: 7s
zombies-target-turtle-eggs: false
- Отображение игрока на карте будет обновляться реже.
Установка этого числа меньше 1 отключит обновления вообще.
item-frame-cursor-update-interval: 20
disable-end-credits: true
fix-items-merging-through-walls: true
keep-spawn-loaded: false
mob-spawner: 4-8
disable-chest-cat-detection: true
disable-relative-projectile-velocity: true
- Запрещает игроку быстро грузить не прогруженные чанки,
телепортируя его назад пока чанк не будет прогружен.
prevent-moving-into-unloaded-chunks: true
- Управляет обновлением поиска пути мобов при обновлении блока в мире. Отключение этой опции может значительно повысить производительность сервера, при этом практически не оказав заметного влияния на игровую механику. Рекомендуется, когда загружено много сущностей, и у вас есть автоматизированные фермы или часы из красного камня.
update-pathfinding-on-block-update: false
- Дает указание серверу кэшировать поиски сущностей во время взрыва, а не пересчитывать их в течение всего процесса.
Это значительно ускоряет взрывы.
optimize-explosions: true
non-player-arrow-despawn-rate: 5 creative-arrow-despawn-rate: 5
В случае, если у вас все равно остались какие-то вопросы, то вы можете создать тикет в нашем дискорд-сервере и вам обязательно помогут.