Если вы когда-либо задумывались, почему ваш Minecraft сервер начинает тормозить, лагать или просто превращается в слайд-шоу, то этот пост — именно для вас! Мы разберём, что такое TPS и MSPT, как использовать плагин Spark для диагностики и оптимизации сервера, и как с помощью простых команд и настроек вернуть вашему серверу былую скорость и отзывчивость. Готовы? Тогда поехали!


Что такое TPS и MSPT и почему они важны для оценки производительности сервера Minecraft

Minecraft — это настоящий живой организм, который работает по циклам, называемым тиками. Представьте, что сервер — это дирижёр оркестра, который раз в 50 миллисекунд (то есть 20 раз в секунду) отдаёт команды всем "музыкантам" — игрокам, мобам, блокам и редстоуну.

  • TPS (Ticks Per Second) — количество тиков в секунду. Идеальное значение — 20. Если TPS падает, игра начинает "лагать".
  • MSPT (Milliseconds Per Tick) — сколько миллисекунд сервер тратит на один тик. Идеально — не больше 50 мс.

Если MSPT превышает 50 мс, сервер не успевает обработать все действия вовремя, и TPS падает ниже 20. Это и есть причина лагов и задержек.


Игровой цикл и тик — почему ровно 20 тиков в секунду критичны

Каждый тик — это как кадр в фильме. Если кадров мало, картинка дергается. Если тиков меньше 20, игровой процесс замедляется: мобы двигаются медленнее, действия игроков обрабатываются с задержкой, и всё начинает "лагать".

Сервер пытается выполнить все задачи за 50 мс, а если не успевает — следующий тик задерживается, и игра начинает "тормозить". Вот почему важно следить за MSPT и TPS.


Как время выполнения тика связано с ощущением лагов

Если сервер тратит на тик меньше 50 мс, он "спит" оставшееся время, чтобы сохранить ровный ритм. Например:

Время выполнения тика Время сна сервера Итог
15 мс 35 мс Идеально, TPS = 20
80 мс 0 мс Плохо, TPS падает, лаги

Когда время тика превышает 50 мс, сервер не успевает "отдохнуть", и следующий тик задерживается. Это ощущается как лаги.


Как использовать Spark для диагностики лагов

Spark — это мощный плагин для Minecraft, который помогает понять, что именно тормозит сервер. Он показывает TPS, MSPT, нагрузку на плагины, количество сущностей и многое другое.

Основные команды Spark

Команда Назначение
/spark profiler start Запуск профайлера для сбора данных о нагрузке
/spark profiler stop Остановка профайлера и загрузка отчёта
/spark profiler open Открыть панель с результатами профилирования
/spark tickmonitor Мониторинг времени выполнения каждого тика
/spark tickmonitor --threshold-tick <мс> Установка порога для уведомлений о лаге тика
/spark ping Просмотр среднего пинга игроков
/spark ping --player <имя> Просмотр пинга конкретного игрока
/spark healthreport Получение отчёта о состоянии сервера

Как включать и настраивать tickmonitor

Команда /spark tickmonitor отслеживает время каждого тика и сравнивает его с средним. Если время тика превышает порог (по умолчанию 100% — то есть в 2 раза дольше среднего), в чат выводится предупреждение.

  • Чтобы включить мониторинг с порогом 50 мс:
    /spark tickmonitor --threshold-tick 50

  • Чтобы включить мониторинг с порогом в процентах:
    /spark tickmonitor --threshold 100

Можно настроить tickmonitor так, чтобы он автоматически запускался при старте сервера, добавив соответствующую команду в скрипт запуска.


Как читать вывод tickmonitor и что делать с данными

Вывод tickmonitor показывает, насколько текущий тик дольше среднего. Например:

Tick took 120ms (+140% from average 50ms)

Это значит, что тик занял 120 мс, что на 140% больше среднего. Такие всплески — сигнал к поиску причины.


Пошаговое руководство для поиска причин лагов

  1. Запустите мониторинг тиков:
    /spark tickmonitor --threshold-tick 55 --without-gc
    Это поможет понять, при каком времени тика начинаются лаги.

  2. Запустите профайлер с фильтром:
    /spark profiler start --only-ticks-over 125 --timeout 300
    Профайлер соберёт данные только о тиках, которые дольше 125 мс, в течение 5 минут.

  3. Остановите профайлер:
    /spark profiler stop
    Откройте ссылку с результатами и изучите, какие плагины или процессы вызывают задержки.


Как интерпретировать профиль и находить виновников лагов

В профиле Spark вы увидите:

  • TPS и MSPT — общая производительность.
  • Загрузка CPU и RAM — насколько сервер загружен.
  • Вкладка Plugins — нагрузка каждого плагина в процентах.
  • Вкладка World — количество сущностей и их влияние.

Если плагин нагружает сервер более чем на 20%, стоит задуматься о его оптимизации или замене.


Практические советы по оптимизации плагинов и сервера

  • Аукционы:
    Уменьшите частоту обновления времени торгов, изменив updateTicks на 72000 в конфиге плагина. Это снизит нагрузку.

  • Плагины логирования/отката:
    Отключите ненужные опции, например, rollback-entities: false, skip-generic-data: true, чтобы уменьшить нагрузку.

  • CMI:
    Включите асинхронную запись файлов (FileSave.Async = true), чтобы снизить нагрузку на сервер.

  • FAWE:
    Отключите tick-limiter или увеличьте интервал проверок, чтобы уменьшить потребление ресурсов.

  • Замените тяжёлые плагины:
    Например, вместо проблемного плагина для NPC используйте ZNPCsPlus или ZNPCs.


Как правильно читать healthreport Spark

Команда /spark healthreport выводит:

Параметр Что показывает Нормальные значения
TPS Тики в секунду за 1, 5, 15 минут 20.0 — отлично, <16 — плохо
Tick Время выполнения тика (мс) <50 мс — нормально
CPU Загрузка процессора (система и сервер) Зависит от железа, но не должно быть красным
Memory Используемая RAM (Мб и %) Зависит от выделенной памяти
Disk Занятое и свободное место на диске Достаточно свободного места

Цвета (зелёный, жёлтый, красный) помогают быстро понять, где проблемы.


Как использовать Spark для мониторинга пинга игроков

  • /spark ping — средний пинг всех игроков.
  • /spark ping --player <имя> — пинг конкретного игрока.

В выводе:

  • Первое число — минимальный пинг.
  • Второе — средний.
  • Третье — пинг 95% времени.
  • Четвёртое — максимальный пинг.

Влияние типа ядра сервера на совместимость и производительность

  • Paper, Purpur — оптимизированы для плагинов, рекомендуются для большинства серверов.
  • Mohist, Arclight — подходят для серверов с модами, но могут иметь проблемы с некоторыми плагинами.

Выбор ядра влияет на стабильность и нагрузку.


Таблица основных команд Spark и их функций

Команда Описание
/spark profiler start Запуск сбора данных о нагрузке сервера
/spark profiler stop Остановка сбора и загрузка отчёта
/spark profiler open Открытие панели с результатами
/spark tickmonitor Мониторинг времени каждого тика
/spark tickmonitor --threshold-tick <мс> Установка порога для уведомлений о лаге тика
/spark ping Просмотр среднего пинга игроков
/spark ping --player <имя> Просмотр пинга конкретного игрока
/spark healthreport Получение отчёта о состоянии сервера

Итог: как вернуть серверу Minecraft скорость и стабильность

  • Следите за TPS и MSPT — они должны быть около 20 и 50 мс соответственно.
  • Используйте /spark tickmonitor для обнаружения всплесков лагов.
  • Запускайте /spark profiler start --only-ticks-over с порогом, чтобы найти виновников.
  • Оптимизируйте конфиги плагинов и ядра сервера.
  • Следите за нагрузкой плагинов во вкладке Plugins.
  • Уменьшайте количество сущностей и контролируйте их с помощью вкладки World.
  • Используйте асинхронные операции там, где это возможно (например, в CMI).
  • Выбирайте правильное ядро сервера для вашей сборки.

Полезные ссылки


Теперь вы вооружены знаниями и инструментами, чтобы ваш Minecraft сервер работал как часы, а не как старый трактор! Помните: лаги — это вызов, который можно и нужно побеждать. Удачи в оптимизации!