Spark: профайлинг и мониторинг сервера — как читать отчёты и находить лаги
Введение: ваш рентген для сервера
Spark — это бесплатный профайлер и мониторинг для серверов Minecraft. Он показывает, КУДА уходит процессорное время, СКОЛЬКО памяти потребляет каждый плагин и КАКИЕ чанки нагружают сервер. Spark — must have для любого администратора, который хочет понимать, что происходит с его сервером. В этом гайде я научу вас запускать профайлинг, читать отчёты и находить виновников лагов за 5 минут.
Установка
- Скачайте Spark с официального сайта spark.lucko.me (бесплатный).
- Поместите JAR-файл в папку
pluginsна ВСЕХ серверах (бекенды + прокси, если используете BungeeCord/Velocity). - Перезапустите серверы. Spark готов к работе.
Команды для быстрой диагностики
Проверка TPS и памяти:
/spark tps
/spark health
/spark tps показывает тики в секунду с разбивкой по мирам. /spark health — общий отчёт: TPS, память, количество мобов, загруженные чанки, скорость диска.
Проверка использования памяти:
/spark health --memory
Показывает, сколько памяти потребляет КАЖДЫЙ плагин. Сортируйте по убыванию и смотрите, какой плагин жрёт больше всего.
Запуск профайлера (CPU Profiling)
Когда сервер лагает, запустите профайлер на 2-3 минуты, чтобы записать, ЧТО ИМЕННО вызывает лаги:
/spark profiler start --timeout 180
Через 3 минуты Spark выдаст ссылку на веб-отчёт. Откройте её в браузере.
Как читать отчёт Spark (Call Tree)
Отчёт представляет собой дерево вызовов (Call Tree). Это иерархический список ВСЕХ задач, которые выполнял сервер, с указанием % процессорного времени.
Пример расшифровки отчёта:
Server thread — 100% CPU
├── Tick — 95%
│ ├── Entity tick — 45% ← МОБЫ ЖРУТ CPU!
│ │ ├── Zombie AI — 15%
│ │ ├── Chicken AI — 12%
│ │ └── Creeper AI — 8%
│ ├── Block entity tick — 25% ← ВОРОНКИ И ПЕЧИ!
│ │ ├── Hopper tick — 20%
│ │ └── Furnace tick — 5%
│ ├── Chunk loading — 10%
│ └── Plugin: EssentialsX — 8% ← ПЛАГИН ЖРЁТ CPU!
└── GC pause — 5%
Вывод: 45% времени уходит на мобов (Entity tick). Нужно найти, где скопились мобы (куриная ферма?) и сократить поголовье. 25% — воронки. Нужно найти гигантскую сортировочную систему и попросить игрока выключать её.
Поиск проблемных чанков
/spark health --chunks
Показывает список САМЫХ НАГРУЖЕННЫХ чанков с координатами. Телепортируйтесь туда (/tp X Y Z) и устраните причину.
Мониторинг GC-пауз
/spark gc
Показывает статистику сборщика мусора: как часто происходят паузы, их длительность. Если паузы длиннее 500 мс — проблема с памятью (см. статью «Ошибка Java Heap Space»).
Интеграция с Discord (Webhook)
Spark может отправлять отчёты о здоровье сервера прямо в Discord-канал. Настройка в config.yml:
discord:
enabled: true
webhook-url: "https://discord.com/api/webhooks/ВАШ_ВЕБХУК"
report-interval: 30m
Каждые 30 минут Spark будет отправлять в Discord сообщение с TPS, памятью, количеством игроков и мобов.
Типичные ошибки
- Не запускают профайлер ВОВРЕМЯ. Если сервер лагает, а вы запустили профайлер через 10 минут, когда лаги прошли — отчёт покажет «всё в порядке». Запускайте профайлер В МОМЕНТ лагов.
- Не умеют читать отчёт. Смотрите на САМЫЕ БОЛЬШИЕ проценты в дереве вызовов. Это и есть виновники. Игнорируйте мелочи (< 1%).
- Запускают профайлер на 10 минут. Это слишком долго — отчёт будет огромным и нечитаемым. 2-3 минуты — оптимально.
💡 Совет профи
Используйте /spark profiler start --thread * для профайлинга ВСЕХ потоков, а не только главного. Иногда проблема не в главном потоке, а в асинхронных задачах (загрузка чанков, сохранение мира, запросы к базе данных). Полный профайлинг покажет и их. А для постоянного мониторинга используйте интеграцию Spark с Grafana (через InfluxDB) — это даст красивые графики TPS, памяти и нагрузки за недели и месяцы.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!