EndyStudio
Плагины

Анализатор профилей spark

Вставьте ссылку из /spark profiler и получите TPS и время тиков сервера, список того, что изменить в Java, конфигах сервера и плагинах, а также время, которое каждый плагин забирает из каждого тика.

  • Бесплатно
  • Без аккаунта
  • Работает в браузере

Профиль spark

Как получить ссылку

  1. Выполните /spark profiler start на сервере. spark встроен в Paper и Purpur начиная с 1.21; на других серверах сначала установите плагин или мод spark.
  2. Дайте ему записывать не меньше 5 минут, пока на сервере есть игроки.
  3. Выполните /spark profiler stop и вставьте сюда ссылку, которую он выдаст.

Профиль загружается напрямую с spark.lucko.me в ваш браузер и никогда не проходит через наш сервер.

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

spark много раз в секунду записывает, чем занят сервер, и загружает это вместе с показателями и конфигами сервера. Анализатор читает всё это и проверяет четыре вещи:

  • Как работает сервер. TPS и MSPT за последние минуты, CPU, память, игроки и загруженные сущности, а также столбец на каждую минуту, чтобы было видно, когда сервер начал тормозить.
  • Java и машина. Размер heap, сборщик мусора и наличие флагов Aikar, полные сборки мусора, свободная память после сборки, потоки CPU и не испытывает ли машина нехватку памяти и не занята ли другими задачами.
  • Настройки. view-distance и simulation-distance в server.properties, лимиты спавна в bukkit.yml, радиусы активации сущностей в spigot.yml и опции Paper и Purpur для взрывов, редстоуна, столкновений, спавнеров, воронок, стоек для брони и жителей. Для каждого пункта указано, какой файл и ключ изменить.
  • Плагины. Время каждого плагина в основном потоке, плагины, которые часто создают проблемы (ClearLag, PlugMan, стакеры мобов), и чанк с наибольшим числом сущностей с командой /tp, чтобы туда попасть.

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

Как сделать профиль spark

  1. Выполните /spark profiler start в консоли или в игре. В Paper и Purpur 1.21 и новее spark уже встроен.
  2. Дайте ему записывать не меньше 5 минут в обычное время, пока есть игроки онлайн. Профиль пустого сервера показывает только простаивающий сервер.
  3. Выполните /spark profiler stop. spark загрузит профиль и выведет ссылку https://spark.lucko.me/….
  4. Вставьте ссылку выше. Анализ начнётся сам.

Если лаги приходят спайками, а не постоянно, записывайте только медленные тики: /spark profiler start --only-ticks-over 100 сохраняет тики дольше 100 мс и пропускает остальные.

TPS и MSPT

Сервер обрабатывает мир тиками, 20 в секунду, поэтому на каждый тик отводится 50 мс. MSPT (миллисекунды на тик) — сколько тик длился на самом деле. Пока он меньше 50, сервер держит 20 TPS и у него есть запас. Когда тики длятся дольше, TPS падает, и мобы, редстоун и посевы замедляются для всех.

MSPT Что это значит
Меньше 30 мс Большой запас на пиковые моменты
30 – 45 мс Нормально, но запас небольшой
45 – 50 мс На пределе: заметен любой спайк
Больше 50 мс Сервер отстаёт, и TPS падает

Анализатор смотрит на 95-й процентиль — время, в которое уложились 95 % тиков. Среднее значение прячет медленные тики, а 95-й процентиль — нет.

Как читать время по плагинам

Список плагинов суммирует время, проведённое в коде каждого плагина в основном потоке, и делит его на число записанных тиков, поэтому значения указаны в мс за тик — относительно 50 мс, отведённых на каждый тик. Плагин, который занимает 5 мс за тик, в одиночку тратит десятую часть бюджета. Время, которое плагин тратит на вызов другого плагина, засчитывается вызванному — так же, как считает собственный просмотрщик spark.

Всё, что остаётся после плагинов, — это сама игра: сущности, чанки, редстоун и игроки. На эту часть и нацелены пункты о настройках. Чтобы точно увидеть, какая задача плагина отнимает время, откройте профиль в просмотрщике spark и переключитесь на вид Sources.

Изменения, которые обычно помогают больше всего

  • Снизьте simulation-distance до 5 или 6, а view-distance — примерно до 8. Simulation distance определяет, какая часть мира обрабатывается вокруг каждого игрока, поэтому влияет на каждый тик.
  • Уменьшите радиусы активации сущностей в spigot.yml, чтобы мобы вдали от игроков обрабатывались реже.
  • Используйте опции Paper: optimize-explosions, реализацию редстоуна ALTERNATE_CURRENT, max-entity-collisions 2 и частоту тиков спавнеров 2.
  • Запускайте Java с флагами Aikar и heap подходящего для сервера размера. Калькулятор ОЗУ составит и то, и другое за вас.
  • Сгенерируйте мир заранее плагином вроде Chunky, чтобы новые чанки не генерировались во время игры.

Меняйте по одной вещи за раз и после этого записывайте новый профиль. Так вы будете знать, что помогло и что откатить, если какая-нибудь ферма перестанет работать.

Ваш профиль и конфиденциальность

Анализатор работает в вашем браузере: профиль загружается напрямую с spark.lucko.me и никогда не проходит через EndyStudio. Помните, что профиль spark содержит конфиги вашего сервера (spark скрывает пароли, IP-адреса и похожие ключи) и что любой, у кого есть ссылка, может его открыть.

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

Как сделать профиль spark?

Выполните /spark profiler start на сервере, дайте ему записывать не меньше 5 минут, пока есть игроки онлайн, затем выполните /spark profiler stop. spark загрузит результат и выдаст ссылку spark.lucko.me. Вставьте эту ссылку в анализатор.

spark встроен в Paper?

Да. Paper и его форки, например Purpur, включают spark начиная с Minecraft 1.21, так что команда /spark работает без установки. На Spigot, Fabric, Forge, NeoForge, Velocity или BungeeCord сначала установите плагин или мод spark.

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

На каждый тик отводится 50 мс. Меньше 30 мс — большой запас, 30–45 мс — нормально, но впритык, а когда тики регулярно превышают 50 мс, сервер уже не может держать 20 TPS и игроки чувствуют лаги.

Мой профиль отправляется в EndyStudio?

Нет. Ваш браузер загружает профиль напрямую с spark.lucko.me и анализирует его на вашем компьютере. Ничего не проходит через наш сервер и ничего не сохраняется. Учтите, что любой, у кого есть ссылка spark, может её открыть, включая конфиги вашего сервера.

Почему анализатор не показывает разбивку по плагинам?

Разбивка строится по дереву вызовов spark, которое есть только в профилях из /spark profiler. В отчёте о состоянии (/spark health) и сводке по heap (/spark heapsummary) его нет.

Анализатор говорит, что всё в порядке, но у игроков всё равно лаги. Почему?

Лаги у игрока не всегда вызваны сервером. Если TPS держится на 20, а тики короткие, проверьте соединение (пинг, потерю пакетов, прокси) или FPS самого клиента. Если лаги приходят короткими всплесками, запишите только медленные тики командой /spark profiler start --only-ticks-over 100.

Другие бесплатные инструменты