Производительность · MINECRAFT JAVA EDITION

Почему падает TPS в Minecraft: диагностика по MSPT и spark

TPS показывает, успевает ли сервер обрабатывать игровые тики. Если мир зависает, а FPS клиента нормальный, начните с длительности тика и профиля нагрузки: покупка RAM без диагностики может ничего не изменить.

Обновлено 3 мин чтения
При 20 TPS на тик есть около 50 мс
Есть запас · 32 мс
Дольше бюджета · 70 мс
Условный пример, не замер сервера. Продолжительная перегрузка тика приводит к отставанию.

TPS, MSPT, ping и FPS: что означает каждое число

При целевых 20 TPS на один тик отводится около 50 мс. Если основной тик систематически длится дольше, сервер отстаёт. MSPT показывает длительность тиков; при нормальном TPS запас производительности виднее именно по MSPT. Короткие отдельные пики не равны постоянной перегрузке.

МетрикаЧто измеряетТипичная проблема
TPSЧастоту обработки тиков серверомЗамедление мобов, редстоуна и мира
MSPTВремя обработки тикаНедостаточный запас или длинные пики
PingЗадержку обмена по сетиПоздние ответы при нормальном TPS
FPSЧастоту кадров клиентаСлабая видеокарта, шейдеры, перегруженный клиент

Таблицу можно прокрутить по горизонтали →

Снимите профиль в момент проблемы

На современных Paper spark входит в состав сервера; в других окружениях может требоваться установка совместимого плагина или мода. Убедитесь, что команда доступна, и используйте инструкцию вашей версии. Не устанавливайте второй экземпляр без необходимости.

  • Профиль пустого сервера не объясняет лаги вечернего пика.
  • Запишите время, онлайн, действия игроков и недавние обновления.
  • Отчёт может раскрывать названия плагинов и сведения об окружении. Делитесь им с теми, кому доверяете.
Команды в консоли сервера без начального /
spark tps
spark profiler start --timeout 120
# Воспроизведите лаг или дождитесь обычного проблемного события.
# После окончания spark выдаст ссылку на отчёт.

Читайте результат, а не только самый большой процент

Сначала проверьте главный серверный поток и участки, занимающие время тика. Большой блок в отчёте не всегда означает виновный плагин: смотрите вложенные вызовы, тип работы и момент записи. Процент одного метода: не то же самое, что процент от мощности всей машины.

Что преобладаетЧто проверить дальше
Генерация и загрузка чанковИсследование мира, телепорты, world border, предварительная генерация
Entity ticking / block entitiesСкопления мобов, воронки, фермы и механизмы в загруженных чанках
Задачи конкретного плагинаВерсию, настройки, синхронные запросы и воспроизводимость на копии
Сборка мусораРазмер heap, утечки, частоту пауз и общий лимит памяти
Ожидание I/O / сохраненияСвободный диск, сохранение миров, бэкапы и внешние базы

Таблицу можно прокрутить по горизонтали →

Проверьте лимит CPU и конкурирующие задачи

Minecraft часто упирается в основной поток. Общая загрузка машины 20% не доказывает наличие свободного времени на нужном ядре. Посмотрите CPU limit услуги и не запускаются ли одновременно бэкап, генерация карты, архивирование или тяжёлые задания планировщика.

  • Сравнивайте лаги при одинаковом числе игроков и схожих действиях.
  • Не запускайте тяжёлый профилировщик бесконечно; ограничьте время записи.
  • Проверяйте свободное место на диске: его заполнение вызывает другие ошибки, которые выглядят как лаги.

Исправляйте по одной причине

Сделайте копию конфигурации. Выберите одну проверяемую гипотезу, измените параметр и повторите профиль в тех же условиях. Не удаляйте все сущности и не отключайте набор плагинов на рабочем сервере без оценки последствий. Если проблему не удалось локализовать, отправьте поддержке время, лог, профиль spark, версию ядра и описание действий, вызывающих лаг.

Документация и источники

Названия файлов и параметры могут отличаться между версиями. Перед изменением сверяйте документацию своей сборки.