Minecraft: «Can't keep up!» — что значит и как разобрать

Предупреждение о тиках сервера: бюджет 50 мс на тик, что значит «отстаёт на N тиков» и как найти тяжёлую задачу в консоли без угадываний.

Команда EGN 7 мин чтения
Minecraft: «Can't keep up!» — что значит и как разобрать
Содержание 15
  1. Коротко
  2. Шаги
  3. Условный пример: отчёт spark
  4. Как читать цифры в строке
  5. Как не спутать с другими проблемами
  6. Симптом → причина → решение
  7. Как сделать в панели EGN
  8. Что проверить после исправления
  9. Частые ошибки
  10. Вопросы и ответы
  11. Что значит «Can’t keep up! Is the server overloaded?»
  12. Почему строка появляется при старте?
  13. Что такое MSPT и TPS?
  14. Поможет ли больший тариф?
  15. Итог

В консоли сервера Minecraft появилась строка Can't keep up! Is the server overloaded? и цифры вроде «отстаёт на 2963 мс или 59 тиков». Звучит тревожно, но сама строка — не причина, а симптом. Она говорит, что сервер не успевает делать работу в отведённое время. Разберём, что это за время, почему сервер отстаёт и как найти тяжёлую задачу.

Коротко

Сервер Minecraft обрабатывает 20 тиков в секунду. Один тик должен уложиться примерно в 50 мс. Если тик длится дольше, сервер пишет Can't keep up! и показывает, на сколько он отстал. Разовые предупреждения при генерации мира обычны. Постоянные строки во время игры значат, что сервер перегружен, и причину нужно искать профилировщиком, например spark.

Шаги

  1. Поймите, что значит строка. Миру Minecraft нужна работа каждый тик: двигать мобов, обрабатывать блоки, принимать действия игроков, отправлять данные. Всё это должно уложиться в 50 мс. Если работа длиннее, следующий тик начинается позже, и сервер накапливает отставание. Строка «отстаёт на N мс или M тиков» показывает, насколько.

    Консоль: «Can't keep up! Running 2963ms or 59 ticks behind»

    На скриншоте тестовый сервер Paper 1.21.4 после запуска: строка про отставание на 2963 мс, то есть 59 тиков. Это случилось во время подготовки спавна, и такой вариант при старте встречается часто. Если та же строка повторяется в игре каждые несколько минут, пора разбираться.

  2. Посмотрите, сколько тиков уходит. Бюджет в 50 мс удобно сравнивать с MSPT — миллисекундами, которые занимает один тик. Если MSPT стабильно ниже 50 мс, сервер справляется, и строки редкие. Если MSPT близко к 50 мс или выше, сервер в зоне риска. Команда /mspt в Paper показывает эти значения; spark тоже выводит TPS и MSPT.

    Бюджет тика: 50 мс; тик 38 мс успевает, тик 118 мс — не успевает

    Схема наглядно: зелёная зона — тик внутри бюджета, превышение — отставание. Это не реальные данные, а иллюстрация механизма.

  3. Найдите тяжёлую задачу. Здесь помогает профилировщик spark: он показывает, какие функции или плагины занимают время тиков. Запустите профилирование в игре в пиковые часы, дайте ему поработать 5–10 минут и изучите отчёт. Самый частый виновник — плагин, который делает тяжёлую работу на каждом тике.

  4. Снизьте нагрузку на тик. Варианты, которые реально работают:

    • уменьшить view-distance и simulation-distance в server.properties; значения по умолчанию у обоих — 10;
    • предгенерировать мир заранее, чтобы генерация не шла во время игры;
    • убрать или заменить плагин из отчёта spark;
    • проверить частоту отчётов и автосохранения, если они совпадают с пиками.
    server.properties
    # server.properties
    view-distance=8
    simulation-distance=6

    Значения в примере — ориентир для слабой машины, а не рекомендация для всех. Подбирайте по MSPT до и после.

  5. Сравните результат. Запустите профилирование снова через сутки в тот же час. Если MSPT опустился и строки исчезли, причина найдена. Если нет, смотрите график процессора в «Консоли»: возможно, нехватка ядра, а не одна задача.

Условный пример: отчёт spark

Вы открываете отчёт spark и видите, что 40 % времени тика уходит на один плагин карты. Остальные задачи занимают мало. Решения два: отключить плагин или переписать его настройки так, чтобы он работал реже. Обычно после отключения такого плагина MSPT заметно падает, а строки Can't keep up! пропадают; свои цифры сравнивайте по spark до и после. В этом примере виноват один компонент, и это видно только по профилю, а не по догадкам.

Как читать цифры в строке

Строка «Running 2963ms or 59 ticks behind» удобна для проверки себя. Сервер делает 20 тиков в секунду, то есть тик занимает 50 мс. 2963 мс делим на 50 — получаем примерно 59 тиков. Значит, строка и цифры согласованы: сервер отстал на три секунды работы. Это не ошибка счётчика, а просто арифметика.

Что это значит на практике? Если отставание растёт во время игры, сервер не успевает отвечать игрокам: они видят задержки, блоки ставятся с паузой, а мобы двигаются рывками. Если отставание возникло один раз и исчезло, сервер нагнал задержку, и игроки почти ничего не заметили. Поэтому смотрите на динамику строк, а не на одну из них.

Как не спутать с другими проблемами

«Can’t keep up!» часто путают с двумя соседними симптомами. Первый — «Timed out»: игрок вылетает, но сообщение другое, и причина может быть в сети игрока. Второй — нехватка памяти: тогда в логе будет OutOfMemoryError или код 137, а не строка про тики. Разделить эти три случая помогает простой вопрос: что сервер пишет в консоли в тот момент, когда игроки жалуются.

Симптом → причина → решение

Симптом Причина Решение
Строка при запуске или генерации мира, потом тихо Разовая нагрузка, норма Ничего не делать, проверить через час
Строки каждые несколько минут в игре Тяжёлая задача в тике Профилировщик spark, отключить или заменить плагин
MSPT близко к 50 мс постоянно Недостаточно процессора или тяжёлые плагины Меньше онлайна, тариф с сильным ядром
Отставание растёт в вечерний пик Пиковая нагрузка view-distance и simulation-distance ниже, предгенерация
Строки вместе с OOM Нехватка памяти См. статью про OutOfMemoryError

Как сделать в панели EGN

  1. Откройте «Консоль» и проследите строки Can't keep up! по времени.
  2. Откройте «Файлы» → server.properties и проверьте view-distance и simulation-distance. Значения по умолчанию — 10 у обоих.
  3. Откройте «Моды и плагины» и посмотрите список. Если в отчёте spark виден плагин, отключите его в «Модах и плагинах» и сравните MSPT.
  4. Запустите профилирование spark в пиковый час и сохраните отчёт.
  5. Через сутки сравните графики процессора и памяти с прошлым периодом.
Консоль: строка про отставание на 2963 мс, 59 тиков
Консоль: строка про отставание на 2963 мс, 59 тиков

На скриншоте строка про отставание после запуска. Цифра сходится с расчётом: 2963 мс — это около 59 тиков по 50 мс. Такая строка при старте — норма; повторяющиеся в игре — повод для разбора.

Что проверить после исправления

Сравнивайте MSPT до и после изменения в одинаковые часы: например, вечером в будни. Одного измерения мало, потому что нагрузка плавает. Если после правок строки Can't keep up! исчезли в пиковый час и MSPT держится ниже 50 мс, изменение сработало. Если нет, вернитесь к отчёту spark и проверьте следующий по времени потребитель.

Частые ошибки

  • Паниковать из-за одной строки. Разовые Can't keep up! при старте и генерации мира — норма.
  • Считать, что лечит перезапуск. Перезапуск сбрасывает состояние, но тяжёлая задача вернётся на следующем пике.
  • Менять все настройки сразу. Не поймёте, что помогло, и можете снизить качество игры без пользы.
  • Ставить оптимизаторы вслепую. Моды-оптимизаторы помогают, но без профиля не знаете, нужны ли они вам. Сначала найдите причину.
  • Винить память. Строка про тики — про процессор и задачи тика. Если память на лимите, смотрите статью про OutOfMemoryError.

Вопросы и ответы

Что значит «Can’t keep up! Is the server overloaded?»

Сервер не успел обработать тик в отведённые 50 мс и отстаёт. Цифра после строки показывает, на сколько он отстал.

Почему строка появляется при старте?

Во время подготовки спавна и генерации мира нагрузка резко растёт. Разовые строки в эти моменты — норма. Тревожить должны постоянные строки во время игры.

Что такое MSPT и TPS?

MSPT — миллисекунды на один тик. TPS — число тиков в секунду, максимум 20. Пока MSPT ниже 50 мс, сервер держит 20 TPS.

Поможет ли больший тариф?

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

Итог

«Can’t keep up!» означает, что тик длиннее 50 мс. Разовые строки при старте — норма, постоянные — повод для разбора. Найдите тяжёлую задачу через spark, снизьте нагрузку на тик и сравните MSPT. Смежные статьи: про Timed out, про лаги и про память.

Сервер под Minecraft за пару минут — egnetwork.ru

Читать далее

Вся рубрика →