Оптимизацию проще сделать заранее, чем чинить сервер, на котором уже сорок человек жалуются на лаги. Эта статья — обзор всех слоёв настройки в порядке отдачи: что даёт больше эффекта, что меньше, и где правка скорее навредит. Она для тех, кто готовит новый сервер или хочет навести порядок, пока всё ещё работает.
Пошаговая инструкция с готовыми значениями для каждого файла — в базе знаний: оптимизация сервера Minecraft. Если сервер уже тормозит прямо сейчас, начните с диагностики по статье как поднять низкий TPS.
Что вообще оптимизируем: TPS
Сервер Minecraft обрабатывает мир 20 раз в секунду, на каждый тик у него 50 миллисекунд. Если мобы, редстоун, чанки и плагины не укладываются в это время, TPS падает, и игра идёт как в замедленной съёмке: блоки ломаются с задержкой, мобы дёргаются. Норма — 20 TPS, ниже 18 игроки уже замечают.
Важно отличать это от пинга. Если лагает у одного игрока, а у остальных всё в порядке, дело в его канале, а не в настройках сервера.
Слой 1. Ядро
Самый дешёвый и самый большой выигрыш — правильное ядро:
- Paper — оптимизированный форк Spigot, поддерживает плагины Bukkit и Spigot. Выбор по умолчанию.
- Purpur — форк Paper с дополнительными настройками геймплея, совместим с плагинами Paper.
- Fabric с модами-оптимизаторами вроде Lithium — если нужен ванильный геймплей с модами, а не плагины.
Ванильное ядро и чистый Spigot для публичного сервера не подходят: в них нет большинства оптимизаций, о которых речь ниже. Сравнение ядер — в статье Paper, Spigot или Purpur.
Слой 2. Память и флаги JVM
Памяти нужно столько, чтобы хватало под онлайн, но не «с запасом на всякий случай». Ориентир на ванильной сборке: 4 ГБ — до 15 игроков, 6 ГБ — до 25, 8 ГБ — до 40. Плагины и моды примерно вдвое увеличивают расход. Подробнее — в статье сколько RAM нужно серверу Minecraft.
Если -Xmx задаётся вручную в параметрах запуска, оставляйте 1–1,5 ГБ сверх него процессу Java и системе — так советует документация PaperMC по флагам Aikar. Там же готовая строка с G1GC: -Xms равен -Xmx, -XX:+UseG1GC, -XX:MaxGCPauseMillis=200, -XX:+DisableExplicitGC и остальные. Эти флаги сглаживают паузы сборщика мусора, но не лечат лаги от ферм и плагинов. Разбор под разные объёмы памяти — в заметке флаги JVM Aikar.
Слой 3. Дистанции в server.properties
Два параметра дают больше, чем все остальные конфиги вместе:
view-distance=8
simulation-distance=6view-distance — сколько чанков сервер отправляет игроку, simulation-distance — в каком радиусе обсчитываются мобы, редстоун и рост растений. По умолчанию оба равны 10. На людном сервере ставьте view-distance 6–8 и simulation-distance 5–6. Ниже 5 опускать не стоит: у игроков перестанут работать фермы рядом с базой. Как выбрать значение под свой онлайн, разобрано в статье про view-distance.
Слой 4. Мобы и сущности: bukkit.yml и spigot.yml
Сущности — самая частая причина просадок на выживании: стада у ферм, мобы в пещерах, тысячи выпавших предметов. Основные рычаги:
| Параметр | Файл | Что делает | Ориентир |
|---|---|---|---|
spawn-limits.monsters | bukkit.yml | Лимит враждебных мобов | 50 вместо 70 |
spawn-limits.animals | bukkit.yml | Лимит животных | 8–10 |
mob-spawn-range | spigot.yml | Радиус спавна вокруг игрока в чанках | 6 |
entity-activation-range | spigot.yml | С какого расстояния мобы «засыпают» | animals 16, monsters 24, misc 8 |
merge-radius | spigot.yml | Слияние лежащих предметов и опыта | item 3.5, exp 4.0 вместо 2.5 и 3.0 |
despawn-ranges | paper-world-defaults.yml | Когда мобы исчезают вдали от игроков | hard 96 вместо 128 |
Меняйте по одному-два значения и смотрите эффект. Слишком агрессивные лимиты ломают фермы, и игроки заметят это раньше, чем рост TPS. Подробно по каждому файлу — настройка bukkit.yml и настройка spigot.yml.
Слой 5. Конфиги Paper
С версии 1.19 настройки Paper лежат в папке config: paper-global.yml на весь сервер и paper-world-defaults.yml для миров. Что даёт реальный прирост:
misc:
redstone-implementation: ALTERNATE_CURRENT
hopper:
cooldown-when-full: true
environment:
optimize-explosions: true
chunks:
max-auto-save-chunks-per-tick: 8
prevent-moving-into-unloaded-chunks: true
tick-rates:
mob-spawner: 2ALTERNATE_CURRENT — быстрый алгоритм редстоуна, совместимый с ванильным поведением почти во всех схемах; на техническом сервере с точными таймингами оставьте VANILLA. Меньшее значение max-auto-save-chunks-per-tick превращает «лаг по расписанию» от автосохранения в ровную фоновую нагрузку. prevent-moving-into-unloaded-chunks нужен на серверах с элитрами. Описание всех ключей — в справочнике конфигурации миров Paper, разбор на русском — в заметке про paper-world-defaults.yml.
Правьте Paper-конфиги на остановленном сервере: /reload их не перечитывает. И не копируйте чужой конфиг целиком: значения сильно зависят от того, что происходит именно на вашем сервере.
Слой 6. Предгенерация мира
Генерация новых чанков — одна из самых тяжёлых операций. Когда несколько игроков разлетаются на элитрах в разные стороны, сервер генерирует мир на лету, и TPS проседает. Решение — сгенерировать мир заранее плагином Chunky:
chunky world world
chunky radius 3000
chunky startЗадачу можно приостановить командой chunky pause и продолжить через chunky continue, поэтому её удобно запускать ночью без игроков. Все команды — в вики Chunky на GitHub. После предгенерации поставьте границу мира того же радиуса, иначе игроки уйдут дальше и проблема вернётся. Чем больше радиус, тем больше места на диске займёт мир, это стоит учесть при выборе тарифа.
Слой 7. Плагины и мониторинг
Один плохо написанный плагин способен съесть половину тика. Начиная с 1.21 Paper поставляется со встроенным профилировщиком spark, а старый Timings устарел и выключен по умолчанию. Основные команды:
/spark tps— текущий TPS и время тика;/spark health— общее состояние сервера, включая память;/spark profiler start --timeout 300— профиль на 5 минут, по ссылке видно, какой плагин или механика съедает время.
Снимайте профиль в вечерний пик, а не на пустом сервере. Как читать отчёт — в заметке анализ лагов через spark.
Порядок работы
- Ядро Paper или Purpur.
- Память по онлайну и флаги Aikar.
view-distanceиsimulation-distance.- Лимиты мобов и активация сущностей.
- Конфиги Paper.
- Предгенерация и граница мира.
- Профиль spark в пиковые часы и разбор плагинов.
Только если после всего этого TPS проседает при разумном онлайне, упираетесь в процессор или память, и тогда пора смотреть на тариф помощнее.
Частые вопросы
Какой TPS считается нормальным?
20 — это максимум и норма. 19–20 игроки не замечают, ниже 18 начинаются видимые задержки, ниже 15 играть уже некомфортно.
Что даёт самый большой прирост производительности?
Переход на Paper и снижение view-distance и simulation-distance. Эти два шага обычно дают больше, чем вся тонкая настройка конфигов вместе.
Поможет ли просто добавить памяти?
Только если сервер действительно упирается в память: это видно в /spark health и по ошибкам OutOfMemoryError. Если тик съедают фермы или плагин, лишние гигабайты TPS не поднимут, а слишком большой -Xmx без запаса для системы может привести к остановке процесса.
Нужен ли Timings на Paper?
Нет. Timings устарел и в 1.21 выключен по умолчанию, вместо него используйте встроенный spark.
Как часто перезапускать сервер?
Ежедневный рестарт в часы минимального онлайна освобождает память и сбрасывает накопившиеся сущности. Настроить его можно по расписанию в панели — см. заметку настройка авторестарта.
Коротко
Оптимизируйте по слоям: ядро Paper, память по онлайну с флагами Aikar, view-distance 6–8 и simulation-distance 5–6, лимиты мобов в bukkit.yml и spigot.yml, конфиги Paper, предгенерация через Chunky. Проверяйте эффект командой /spark tps и профилем spark в пиковые часы, меняя по одному параметру за раз.
Нужна помощь с настройкой — напишите в поддержку TeaHost в Telegram.


