Раздел 2 - Ищем причины лагов
Всплески лагов возникают, когда выполнение небольшого количества тиков (или иногда только одного тика) занимает много времени. Это может происходить либо довольно часто, например, 1 раз в каждые 20 тиков, либо редко, например, раз в минуту. Обычно они связаны с поведением игроков.
Найти причину скачков задержки, просто просматривая обычные данные профилирования, может быть непросто, поскольку данные усредняются. Все остальные замеры "нейтрализуют" всплеск и маскируют его влияние.
К счастью, у spark есть два полезных инструмента для решения этой проблемы.
Шаг 1: Используйте /spark tickmonitor для обнаружения всплеска задержки
Чтобы определить причину всплеска лагов в отчете профайлера, нам нужно иметь возможность отделить "проседающие" тики от всех остальных.
Для этого мы можем использовать команду /spark tickmonitor.
Эта команда работает, сначала устанавливая среднюю частоту тиков сервера, а затем:
• Отслеживает время, затраченное на каждый последующий тик
• Вычисляет разницу (в процентах) между временем, затраченным на выполнение последнего тика, и средним
• Отправляет сообщение в чат, если разница превышает определенный порог
Чтобы включить мониторинг, просто запустите /spark tickmonitor По умолчанию пороговое значение равно 100% (увеличение на 100% означает, что тик занял в два раза больше времени, чем в среднем). Вы также можете указать пороговое значение в качестве абсолютной длительности тика, например /spark tickmonitor --threshold-tick 50, чтобы сообщать о любом тике, превышающем 50 миллисекунд (это точка, в которой сервер должен начать догонять или отставать).
Тогда вам просто нужно подождать. Если пролагивания, которые вы испытываете, заметны в игровом процессе, попробуйте сопоставить эффекты лагов в игре с результатами мониторинга. Если выходные данные недостаточно чувствительны, попробуйте установить более низкий порог, например /spark tickmonitor --threshold-tick 70.
Ради объяснения здесь я собираюсь "создать" всплеск лагов с помощью WorldEdit.