Ко всем статьям
~3 мин чтения

Как поднять TPS на Minecraft сервере: руководство по устранению лагов

Пошаговая инструкция по поиску причин просадки TPS: диагностика через spark, оптимизация мобов, воронки, редстоун и правильные флаги Java.

Каждый владелец сервера Minecraft сталкивается с ситуацией, когда показатель TPS (Ticks Per Second) падает с идеальных 20.0 до 15.0 или ниже. Игроки начинают жаловаться на задержки, зависание мобов и лаги при ломании блоков.

В этом руководстве разберем, как найти точный источник нагрузки и вернуть стабильные 20 TPS.

1. Что такое TPS и MSPT?#

  • TPS (Ticks Per Second): Количество игровых тактов в секунду. Норма — ровно 20.0.
  • MSPT (Milliseconds Per Tick): Время, за которое сервер обрабатывает один такт.
    • Если MSPT < 50 мс, сервер выдает стабильные 20 TPS.
    • Если MSPT > 50 мс, сервер не успевает рассчитывать мир вовремя и TPS начинает падать.
Показатель MSPTСостояние сервераИтоговый TPS
0 – 35 мсОтлично, есть запас мощности20.0
35 – 50 мсНагрузка высокая, но стабильно20.0
50 – 75 мсСервер перегружен, заметны лаги13.0 – 19.0
> 100 мсКритическое состояние, сильные фризы< 10.0

2. Диагностика через spark profiler#

Не пытайтесь оптимизировать сервер вслепую. Установите бесплатный плагин spark и запустите анализ:

bash
# Запустить профилирование нагрузки
/spark sampler --timeout 60

По окончании таймера вы получите ссылку на интерактивный веб-отчет. Обратите внимание на следующие узлы:

  • world - entityTick: говорит о том, что лаги создают мобы или жители.
  • world - tileEntityTick: лаги вызваны воронками (hoppers), сундуками или механизмами.
  • world - doChunkUnload / doChunkMap: медленная работа диска или генерация чанков.

3. Оптимизация воронки и тайл-сущностей#

Воронки (Hoppers) — один из самых тяжелых элементов в Minecraft, так как каждая воронка проверяет пространство над собой на наличие предметов каждый такт.

В файле paper-world-defaults.yml настройте параметры:

yaml
hopper:
  disable-move-event: true
  ignore-occluding-blocks: true

Совет: Включение disable-move-event: true отключает вызов события InventoryMoveItemEvent для плагинов защиты, что снижает нагрузку от воронок в 3–5 раз.


4. Оптимизация спавна и тиков сущностей#

Большие скопления мобов на фермах и в деревнях жителей вызывают экспоненциальный рост нагрузки.

В spigot.yml:

yaml
world-settings:
  default:
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 32
      misc: 8
      water: 8
      villagers: 16

В paper-world-defaults.yml:

yaml
entities:
  armor-stands:
    tick: false
  spawning:
    per-player-mob-spawns: true

Параметр per-player-mob-spawns: true распределяет лимит спавна мобов индивидуально по каждому игроку, предотвращая спавн тысяч мобов в одной точке карты.


5. Предгенерация мира (Chunky)#

Если игроки часто исследуют мир, сервер тратит процессорное время на вычисление структуры чанков и пещер.

  1. Установите плагин Chunky.
  2. Задайте границу мира: /worldborder set 6000.
  3. Запустите предварительную генерацию: /chunky radius 3000 и /chunky start.

6. Оптимизированные флаги запуска Java (Aikar's Flags)#

Использование Aikar's Flags для сборщика мусора G1GC помогает избавиться от микрофризов при сборке мусора в оперативной памяти:

bash
java -Xms4G -Xmx4G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1ReservePercent=20 \
  -jar paper.jar --nogui

Кстати: На хостинге Obsy Host флаги Aikar's Flags настроены и применяются автоматически по умолчанию для каждого сервера — вручную прописывать параметры JVM не нужно.


Итог#

  1. Найдите причину лагов через /spark.
  2. Ограничьте радиус активации сущностей (entity-activation-range).
  3. Оптимизируйте воронки (disable-move-event: true).
  4. Предгенерируйте мир с помощью Chunky.
  5. Используйте Aikar's флаги JVM (на Obsy Host они активны по умолчанию).
Готовы запустить свой Minecraft сервер?
Собственная панель управления, быстрые NVMe накопители, защита от DDoS и запуск за пару минут.