Spark: как найти причину лагов сервера

Сервер

Сервер лагает, TPS падает, а причина непонятна. Spark отвечает на этот вопрос точно: показывает, какой плагин, мод или чанк съедает время тика.

Отчёт профилировщика Spark с деревом вызовов Если сервера ещё нет — гайд по запуску сервера.

Что это такое

Spark — профилировщик. Он замеряет, на что уходит процессорное время, и строит отчёт с разбивкой. Работает и как мод, и как плагин, на клиенте тоже.

Ключевое отличие от «оптимизаторов»: Spark ничего не ускоряет. Он только измеряет. Но без измерения оптимизация превращается в гадание — вы удаляете случайные моды и надеетесь.

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

КомандаЧто делает
/spark profiler startНачать сбор данных
/spark profiler stopОстановить и выдать ссылку на отчёт
/spark tpsТекущий TPS и загрузка
/spark healthСводка: TPS, память, диск
/spark heapsummaryЧто занимает оперативную память

Отчёт открывается в браузере по ссылке — это дерево вызовов, где видно, какой участок кода сколько времени занял.

Как читать отчёт

Не пугайтесь дерева. Нужно несколько вещей:

  1. Разверните ветку с наибольшим процентом.
  2. Спускайтесь вглубь, пока не увидите имя пакета мода или плагина — например, что-то вида com.название.
  3. Это и есть виновник. Дальше решаете: настроить, обновить или убрать.

Профилировать нужно в момент лагов, а не когда всё хорошо. Запустите сбор, дождитесь просадки, остановите.

Типичные находки

Память

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

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

На клиенте

Spark работает и в одиночной игре: помогает понять, какой мод роняет FPS. Особенно полезен на слабом железе, где каждый кадр на счету — остальные советы в статье про слабый ПК.

Кому нужен

Всем, у кого есть сервер со сборкой. Ставится один раз, лежит без нагрузки и пригождается в тот день, когда TPS уходит в пол. Без него остаётся только удалять моды наугад.

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

Как найти причину лагов сервера?

Запустить /spark profiler start в момент просадки, дождаться лагов, остановить командой stop и открыть отчёт по ссылке. В дереве вызовов разворачивайте ветку с наибольшим процентом до имени пакета мода или плагина.

Ускоряет ли Spark сервер?

Нет, он только измеряет. Но без измерения оптимизация превращается в удаление модов наугад.

Что показывает heapsummary?

Что занимает оперативную память. Полезно, когда сервер уходит в бесконечную сборку мусора: TPS падает при небольшой нагрузке на процессор.

Работает ли Spark в одиночной игре?

Да, на клиенте он помогает понять, какой мод роняет FPS.

Читайте также