TeaHost
Minecraftоптимизацияtpspaperпроизводительность2 мин. чтения

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

Все способы снизить лаги и повысить TPS сервера Minecraft — настройки, плагины, JVM-флаги

Кратко

Оптимизацию сервера Minecraft начинайте с замера: /spark tps и профиль Spark покажут, что съедает тик. Дальше по порядку: view-distance 6–8 и simulation-distance 4–6 в server.properties, лимиты мобов в bukkit.yml, entity-activation-range в spigot.yml, настройки Paper, Aikar's flags и прегенерация мира через Chunky. Норма — 20 TPS, ниже 18 игроки замечают лаги.

Почему падает TPS?

TPS (Ticks Per Second) — главный показатель производительности сервера. Норма — 20 TPS. При падении ниже 18 игроки замечают лаги. Точнее TPS показывает MSPT — сколько миллисекунд занимает один тик: пока он укладывается в 50 мс, сервер держит 20 TPS.

Основные причины просадок:

  • Слишком большой view-distance
  • Переспавн мобов
  • Тяжёлые редстоун-механизмы
  • Активные фермы
  • Неоптимизированные плагины

Прежде чем что-то менять, найдите виновника профайлером — как читать отчёт, разобрано в статье про анализ лагов через Spark.

Быстрые настройки

Порядок работы — сверху вниз, по одному файлу за раз:

ФайлЧто менятьПодробный разбор
server.propertiesview-distance 6–8, simulation-distance 4–6server.properties
bukkit.ymlspawn-limits: monsters 40–50, ambient 1–3; ticks-per.monster-spawns 2–4bukkit.yml
spigot.ymlmob-spawn-range: 6, entity-activation-range animals 16, monsters 24, misc 8spigot.yml
config/paper-world-defaults.ymlРедстоун ALTERNATE_CURRENT, тикрейты спавнеров и жителей, despawn-rangespaper.yml

server.properties

код
view-distance=6
simulation-distance=4

bukkit.yml

yaml
spawn-limits:
  monsters: 50
  animals: 10
  water-animals: 3
  ambient: 3
ticks-per:
  monster-spawns: 2

spigot.yml

yaml
world-settings:
  default:
    mob-spawn-range: 6
    entity-activation-range:
      animals: 16
      monsters: 24
      misc: 8

JVM-флаги запуска

Используйте полный набор Aikar's flags — строка и разбор каждого флага в статье про флаги JVM. Главное правило: -Xms равен -Xmx, а сам -Xmx на 1–1,5 ГБ меньше памяти тарифа, иначе Java не хватит места вне кучи. Готовые значения для каждого объёма памяти — в статье про выделение памяти.

Плагины для мониторинга

Spark — профилировщик производительности. В Paper 1.21 и новее он уже встроен, на других ядрах установите его через файловый менеджер панели.

Команды:

  • /spark tps — текущий TPS и MSPT
  • /spark profiler start --timeout 120 — профиль нагрузки, через две минуты придёт ссылка на отчёт
  • Timings в Paper 1.21 объявлен устаревшим и выключен по умолчанию — PaperMC рекомендует Spark.

    Пре-генерация мира

    Лаги при исследовании новых территорий устраняются пре-генерацией. Используйте плагин Chunky:

    код
    /chunky world world
    /chunky radius 3000
    /chunky start

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

    Лимиты для ферм

    В config/paper-world-defaults.yml:

    yaml
    chunks:
      max-auto-save-chunks-per-tick: 8
    hopper:
      cooldown-when-full: true
      ignore-occluding-blocks: true

    max-auto-save-chunks-per-tick: 8 растягивает автосохранение и убирает «лаг по расписанию», cooldown-when-full не даёт полной воронке проверять содержимое каждый тик. Остальные параметры Paper — в разборе paper.yml.

    Когда ничего не помогает

    Если TPS стабильно ниже 17 при небольшом онлайне, а профиль не показывает явного виновника, — скорее всего сервер упёрся в лимит ресурсов. В этом случае стоит выбрать тариф с большим запасом CPU и памяти.