Почему падает TPS?
TPS (Ticks Per Second) — главный показатель производительности сервера. Норма — 20 TPS. При падении ниже 18 игроки замечают лаги. Точнее TPS показывает MSPT — сколько миллисекунд занимает один тик: пока он укладывается в 50 мс, сервер держит 20 TPS.
Основные причины просадок:
- Слишком большой
view-distance - Переспавн мобов
- Тяжёлые редстоун-механизмы
- Активные фермы
- Неоптимизированные плагины
Прежде чем что-то менять, найдите виновника профайлером — как читать отчёт, разобрано в статье про анализ лагов через Spark.
Быстрые настройки
Порядок работы — сверху вниз, по одному файлу за раз:
| Файл | Что менять | Подробный разбор |
|---|---|---|
server.properties | view-distance 6–8, simulation-distance 4–6 | server.properties |
bukkit.yml | spawn-limits: monsters 40–50, ambient 1–3; ticks-per.monster-spawns 2–4 | bukkit.yml |
spigot.yml | mob-spawn-range: 6, entity-activation-range animals 16, monsters 24, misc 8 | spigot.yml |
config/paper-world-defaults.yml | Редстоун ALTERNATE_CURRENT, тикрейты спавнеров и жителей, despawn-ranges | paper.yml |
server.properties
view-distance=6
simulation-distance=4bukkit.yml
spawn-limits:
monsters: 50
animals: 10
water-animals: 3
ambient: 3
ticks-per:
monster-spawns: 2spigot.yml
world-settings:
default:
mob-spawn-range: 6
entity-activation-range:
animals: 16
monsters: 24
misc: 8JVM-флаги запуска
Используйте полный набор 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:
chunks:
max-auto-save-chunks-per-tick: 8
hopper:
cooldown-when-full: true
ignore-occluding-blocks: truemax-auto-save-chunks-per-tick: 8 растягивает автосохранение и убирает «лаг по расписанию», cooldown-when-full не даёт полной воронке проверять содержимое каждый тик. Остальные параметры Paper — в разборе paper.yml.
Когда ничего не помогает
Если TPS стабильно ниже 17 при небольшом онлайне, а профиль не показывает явного виновника, — скорее всего сервер упёрся в лимит ресурсов. В этом случае стоит выбрать тариф с большим запасом CPU и памяти.