DGuard

TPS и MSPT: что значат и какие цифры нормальные

TPS — сколько тиков сервер успевает за секунду, MSPT — сколько миллисекунд длится тик. Норма — 20 TPS, а для неё каждый тик должен укладываться в 50 мс. Разбираем, где смотреть эти цифры, какие значения тревожные и что происходит, когда сервер не успевает.

Команда DGuard7 мин

Коротко: сервер Minecraft считает 20 тиков в секунду, на каждый — 50 мс. Пока MSPT ниже 50, TPS держится на 20, сколько бы ни было запаса, поэтому MSPT — ранний сигнал, а TPS — уже последствие. Смотрите /spark tps или /mspt в Paper: зелёная зона — TPS выше 18 и MSPT ниже 40 мс. Если MSPT в часы пика подбирается к 50 — ищите причину, пока игроки не начали жаловаться.

Тик: 20 в секунду, 50 мс на каждый

Игра крутится в одном большом цикле, и один его проход называется тиком. По Minecraft Wiki, игра идёт с фиксированной скоростью 20 тиков в секунду — тик каждые 50 мс, поэтому игровые сутки длятся ровно 24 000 тиков, то есть 20 минут. Почти всё в игре отсчитывается тиками, а не секундами: если сервер не успевает, растут посевы, плавится руда и ходят мобы медленнее.

  • обработка пакетов игроков: движение, установка и разрушение блоков, удары;
  • движение игроков и других сущностей, ИИ и поиск пути мобов, их спавн;
  • редстоун, запланированные обновления блоков и жидкостей, случайные тики — рост растений;
  • отправка игрокам изменений блоков и движения сущностей, автосохранение раз в 6000 тиков.

Если работа тика заняла меньше 50 мс, сервер спит оставшееся время и только потом начинает следующий тик. В том же ритме 20 тиков живёт и клиент — чит Timer подкручивает именно его, чтобы игрок двигался быстрее остальных.

TPS и MSPT: в чём разница

TPS (ticks per second) — сколько тиков сервер в среднем успевает за секунду; выше 20 не бывает. MSPT (milliseconds per tick) — сколько миллисекунд в среднем занимает тик. Связь простая: TPS держится на 20, пока MSPT не выше 50. Когда тик длиннее, следующий приходится откладывать, и тиков в секунду становится меньше.

MSPTTPSЧто это значит
15 мс20большой запас: 35 мс каждого тика сервер спит
45 мс20TPS тот же, но запаса почти нет — первый же наплыв игроков даст лаги
60 мсоколо 16,7тики не укладываются в 50 мс, игра заметно замедляется
100 мс10всё идёт вдвое медленнее: мобы, посевы, печи, редстоун
Если бы все тики длились одинаково: TPS = 1000 / MSPT, но не больше 20

Средние значения обманчивы. Сервер может считать большинство тиков за 20 мс, а раз в минуту тратить 300 мс на один — средний TPS почти не изменится, а игроки увидят фриз. Поэтому смотрите не только среднее, но и максимум и 95-й перцентиль MSPT.

Где смотреть TPS и MSPT

КомандаЧто показывает
/spark tpsTPS за последние 5 с, 10 с, 1, 5 и 15 минут; время тика (минимум, медиана, 95-й перцентиль, максимум) за 10 с и 1 минуту; загрузку процессора
/tps (Paper)TPS за последние 1, 5 и 15 минут; право bukkit.command.tps
/mspt (Paper)среднее, минимальное и максимальное MSPT за последние 5, 10 и 60 секунд
/tick query (ванилла)целевую скорость тиков, среднее время тика и перцентили; есть с 1.20.3, нужен уровень оператора 3
/spark tickmonitorсообщения в чат о тиках, которые сильно длиннее среднего
По документации Paper (Commands), spark и Minecraft Wiki; интервалы /spark tps — по исходному коду spark

Документация Paper прямо советует: /tps и /mspt работают, но для оценки производительности полагайтесь на /spark. В Paper 1.21+ spark встроен — подробно о нём в статье профайлер spark.

Какие значения нормальные

ЗелёныйЖёлтыйКрасный
TPS (при цели 20)выше 18от 16 до 1816 и ниже
Время тикаменьше 40 мсот 40 до 50 мс50 мс и больше
Цвета TPS — как в /tps Paper и /spark tps, цвета времени тика — как в /spark tps; по их исходному коду

Ещё один ориентир — профиль spark. Документация spark считает так: если сервер спит меньше 20 % времени основного потока, он работает на пределе и может лагать на отдельных тиках; меньше 5 % — почти наверняка лагает, запаса нет.

Что делает сервер, когда не успевает

  • Догоняет после короткой просадки. Paper после лага может ускориться и наверстать до 5 тиков — это misc.catchup-ticks в paper-global.yml, 0 выключает догон. Поэтому сразу после фриза TPS может ненадолго подняться выше 20: spark показывает такое значение как 20 со звёздочкой.
  • Сдаётся при долгом отставании. По Minecraft Wiki, если сервер отстал от расписания больше чем на 2 секунды, он сбрасывает расписание, и пропущенное время уже не возвращается.
  • Пишет в лог. Сообщение Can't keep up! Is the server overloaded? — признак отставания. Его можно выключить (settings.warn-on-overload: false в bukkit.yml), но лучше найти причину.
  • Останавливается при зависании. Если один тик идёт 60 секунд (timeout-time в spigot.yml), watchdog считает сервер зависшим и останавливает его — как читать такой лог, описано в статье логи и краши.

MSPT растёт — что дальше

TPS и античит

Античит живёт в том же ритме тиков: движение и удары игрока сверяются со временем. Во время просадок TPS проверки, завязанные на время, видят то, чего не было, — поэтому важно, как античит решает, кого наказывать. DGuard — лучший античит для современного сервера Minecraft — копит улики из нескольких эпизодов и не торопится с выводом, так что один лаг честного игрока не накажет. Сам он почти не трогает тик: проверки идут в сетевых потоках, на основном потоке это 0,03 % одного ядра — 0,38 мс из 10,9 мс тика при 121 игроке.

Плагин регулярно сообщает в панель онлайн и TPS сервера, и вы видите их у каждого сервера, не заходя в консоль. Если сервер 10 минут не выходит на связь, придёт сообщение в Telegram или на почту. Как это выглядит, можно посмотреть в демо-кабинете без регистрации.

Частые вопросы

Какой TPS нормальный для сервера Minecraft?

20 — максимум и норма. Paper и spark считают зелёной зоной TPS выше 18, жёлтой — от 16 до 18, ниже — красной.

Чем MSPT отличается от TPS?

MSPT — сколько миллисекунд занимает тик, TPS — сколько тиков проходит за секунду. TPS остаётся 20, пока MSPT ниже 50, поэтому MSPT показывает запас, а TPS падает, только когда запас кончился.

Какой MSPT считается хорошим?

Меньше 40 мс — зелёная зона в /spark tps, от 40 до 50 — на грани, 50 и больше — сервер не успевает. Смотрите и максимум: редкие длинные тики игроки чувствуют как фризы.

Почему TPS бывает выше 20?

После просадки Paper наверстывает пропущенные тики (до 5 по умолчанию), и TPS ненадолго поднимается выше 20. spark показывает такое значение как 20 со звёздочкой.

Как посмотреть TPS на сервере Paper?

Командой /spark tps — она показывает и TPS, и время тиков. Ещё есть /tps (за 1, 5 и 15 минут) и /mspt (за 5, 10 и 60 секунд).

Источники

Все разделы
Оптимизация6 минПрофайлер spark: как найти, что тормозит серверspark — профайлер для серверов Minecraft: он показывает, на что уходит время тика, какой плагин сколько тратит, как ведут себя память и сборщик мусора. В Paper 1.21 и новее он уже встроен. Разбираем команды, флаги и то, как читать отчёт.ЧитатьОптимизация6 минПочему лагает сервер Minecraft и как найти причинуСначала поймите, что лагает: сервер (низкий TPS), сеть (пинг) или компьютер игрока (FPS). Если сервер — измерьте MSPT и снимите профиль spark: он покажет, что съедает 50 мс тика.ЧитатьОптимизация8 минОптимизация Paper: какие настройки крутить и чем это грозитСправочник по настройкам, которые влияют на нагрузку сервера Paper: server.properties, paper-world-defaults.yml, paper-global.yml, spigot.yml и bukkit.yml. Значения по умолчанию — из документации Paper. У каждой настройки есть цена: фермы, редстоун и ванильные механики.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.