Как отличить лаг сервера от лага игрока, снять профиль spark в нужный момент и по отчёту найти конкретный плагин, ферму или механизм, который съедает тик.
«Сервер лагает» обычно означает одно из трёх: не успевает сам сервер, у игрока слабый компьютер или плохая связь. Чинить на сервере можно только первое. Ниже порядок, как отличить одно от другого и найти виновника профилировщиком, а не перебором плагинов.
| Что видят игроки | Скорее всего | Чем проверить |
|---|---|---|
| Мобы дёргаются, сломанные блоки возвращаются, сундуки открываются с задержкой у всех | сервер не успевает тик | /tps, /mspt |
| Картинка рвётся у одного, у остальных плавно | компьютер игрока | FPS на экране F3 |
| Одного игрока откидывает назад | его связь | пинг в табе |
| Короткий фриз раз в несколько минут | сборка мусора или автосохранение | /spark health, /spark gc |
| Лагает в одном месте карты | ферма, редстоун, толпа мобов | профиль и подсчёт сущностей |
Сервер должен делать 20 тиков в секунду, то есть тратить на тик не больше 50 мс. В Paper и Purpur /tps показывает среднее за 1, 5 и 15 минут, а /mspt время тика. Если TPS 20 и MSPT заметно ниже 50, сервер справляется, ищите причину у игрока.
spark показывает, на что уходит время основного потока сервера. В свежих сборках Paper он уже встроен, на старых ставится как обычный плагин. Нужны права spark или оператор.
/spark profiler start
/spark profiler stopМожно сразу задать длительность в секундах, тогда останавливать не придётся. Если лаг редкий и пиками, добавьте флаг, который записывает только тики дольше заданного числа миллисекунд. Обычные тики тогда не размоют картину.
/spark profiler start --timeout 300
/spark profiler start --only-ticks-over 100В отчёте дерево вызовов. Нужна ветка основного потока, она называется Server thread. Раскрывайте узел с самым большим процентом и спускайтесь, пока не упрётесь в понятное имя.
com.автор.плагин. Время ест плагин. Смотрите глубже, что именно: обработчик события, задача по таймеру, запрос к базе в основном потоке.Смотрите на долю времени, а не на то, как часто имя мелькает. Плагин на 3 % это фон. Плагин, который в лаговых тиках занимает половину, подозреваемый номер один.
| Команда | Что показывает |
|---|---|
/spark tps | TPS и время тика за разные периоды, загрузку процессора |
/spark health | сводку: TPS, MSPT, процессор, память, диск |
/spark tickmonitor | сообщает в чат о тиках, которые заметно дольше обычных |
/spark gc | сколько раз и как долго работала сборка мусора |
/spark heapsummary | чем занята память, если её не хватает |
Timings это старый встроенный отчёт Spigot и Paper. В новых версиях Paper он объявлен устаревшим и убран в пользу spark. Если ядро старое и spark по какой-то причине не встаёт, отчёт снимается так:
/timings on
(подождать несколько минут под нагрузкой)
/timings pasteTimings меряет крупными блоками: плагин, событие, задача. spark видит глубже, до конкретного метода. Если выбор есть, берите spark.
Если профиль указывает на сущности или механизмы, нужно найти, где они. Ванильная команда считает сущности нужного типа по всему серверу:
/execute if entity @e[type=minecraft:item]
/execute if entity @e[type=minecraft:villager]В ответе будет число. Вместо item и villager подставьте armor_stand, minecart, hopper_minecart. В Paper есть /paper entity list, она показывает сущности по типам и самые забитые чанки. Дальше телепорт туда и разговор с владельцем фермы.
/kill @e без типа. Убьёт жителей, питомцев, стойки, рамки и заодно игроков.Профиль снимает spark, и Cloud Panel его не заменяет. Она убирает беготню вокруг. На главном экране видно, работает ли сервер и сколько игроков онлайн, рядом загрузка диска и памяти машины. Команды spark отдаются из консоли в том же окне, без входа в игру и без SSH.
Когда подозреваемый найден, его можно выключить в разделе плагинов: панель не удаляет jar, а переносит его в отдельную папку. Перезапуск кнопкой, проверили TPS, вернули плагин, если дело не в нём. Правки конфигов, которыми вы лечите лаг, попадают в журнал и откатываются, если стало хуже.
/tps и /mspt.Server thread, найден узел с наибольшей долей.Консоль, состояние сервера и выключение плагина кнопкой в одном окне: 3 дня бесплатно.
Мы делаем сборки, плагины и сайты для серверов Minecraft с 2022 года. Готовое решение ставится на ваш хостинг за вечер, установку делаем бесплатно.