Оптимизация Minecraft сервера на Purpur - максимум производительности | Cshield - Форум социальной инженерии

Оптимизация Minecraft сервера на Purpur - максимум производительности

SUNKEM_1

Местный
Знакомо? запускаешь сервер, всё летает, но когда подключаются игроки - начинаются лаги, телепорты и вечное "почему тормозит?".
Всё упирается в TPS (Ticks Per Second) - главный показатель сервера.

Давай разберём, как выжать из Purpur максимум, даже на слабом железе.

Почему именно Purpur?

Purpur — это форк Paper с уклоном в производительность и кастомизацию.

Что даёт переход?

  • Прирост FPS и TPS compared to Paper/Spigot
  • Тонкая настройка через `purpur.yml`
  • Отключение тяжёлых механик без потери геймплея
  • Оптимизации "из коробки"

Совет: Если всё ещё на Spigot - переход на Purpur даст +10-20% к производительности сразу!

Оптимизация конфигов

spigot.yml

YAML:
entity-activation-range:
  animals: 12
  monsters: 20
  raiders: 32
  misc: 6
  tick-inactive-villagers: false


merge-radius:
  item: 3.5
  exp: 4.0

Уменьшаем радиус активации мобов - меньше нагрузка на CPU

paper.yml

YAML:
optimize-explosions: true
mob-spawn-range: 3
max-auto-save-chunks-per-tick: 6
delay-chunk-unloads-by: 20s

Взрывы не просаживают TPS, мобы спавнятся ближе

purpur.yml

YAML:
entities:
  villager:
    lobotomize:
      enabled: true
      
tick:
  armor-stands-tick: false
 
gameplay-mechanics:
  disable-pet-move-to-owner: true

"Лоботомия" деревенеющих жителей экономит до 30% CPU! Стойки брони не тикают.

Убираем мусор и лишнюю нагрузку

Обязательные плагины:
  • ClearLag - автоочистка предметов каждые 10 минут
  • FarmLimiter - лимит мобов в чанках (не больше 20 животных)
  • Spark - профилирование и поиск узких мест
  • Chunky - предзагрузка мира без лагов

Важно: Не ставь супер-агрессивную очистку - игроки потеряют лут!

JVM-флаги - сердце оптимизации

Вот проверенные флаги от Aikar (адаптировано под Purpur):


Bash:
java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs \
-Daikars.new.flags=true -jar purpur.jar nogui


Что это даёт:
  • Плавный GC без просадок
  • Эффективное использование RAM
  • Быстрая загрузка чанков

Ограничиваем игроков и мир

server.properties

YAML:
view-distance=6
simulation-distance=5
max-entity-collisions=2


Каждое уменьшение `view-distance` на 1 даёт + ~5% к TPS!

Плагины контроля:
  • AntiRedstoneClock - блокирует редстоун-лаги
  • VillagerOptimiser - оптимизирует торговлю
  • LimitPillagers - ограничивает рейды

Мониторим и следим

Не запускай сервер вслепую!

В игре:

  1. /spark profiler start
  2. /spark profiler stop

Что смотреть:
  • TPS - должен быть 20.0
  • MSPT - не больше 50ms
  • Entity count - не больше 2000 на мир
  • Chunk loads - резкие скачки = проблема

Итог - чек-лист оптимизации

  • Перешёл на Purpur
  • Настроил entity-activation-range
  • Включил lobotomize для жителей
  • Поставил Spark и ClearLag
  • Используешь флаги Aikar
  • Уменьшил view-distance до 6
  • Настроил мониторинг

Даже VPS за 5$ в месяц сможет держать 20+ игроков без лагов, если всё правильно настроить. Главное - не переборщить с оптимизацией там, где это влияет на геймплей.

P.S. Всегда тестируй настройки на тестовом сервере перед применением на основном!
 
Сверху