Если Minecraft сервер лагает, начните с проверки TPS и профилирования, а не со случайной смены настроек. В этом руководстве показано, как найти причину просадок TPS из-за плагинов, чанков, генерации мира или JVM, а затем устранить её с помощью Spark, Timings, LagGoggles, настройки Paper/Purpur и контроля загрузки чанков.
Когда использовать это руководство и что искать в отчёте
- TPS падает ниже 20 во время онлайна или при исследовании новых территорий.
- Появляются фризы, откаты, задержки взаимодействия или резкие просадки после установки плагина.
- Нужно проверить, вызывают ли лаги плагины, сущности, редстоун, генерация chunks, диск, CPU или сборщик мусора GC.
- Сервер работает на Paper, Purpur, Spigot, Vanilla, модовой сборке или платформе Aternos.
В отчёте сначала проверьте средний TPS и длительность тиков, затем найдите самые широкие участки флейм-графа или плагины с высокой долей общего времени тика. Отдельно сопоставьте момент просадки с активностью GC, генерацией чанков и количеством сущностей. Такой порядок помогает отличить просадки TPS из-за плагинов от лагов из-за чанков и проблем с JVM.
Диагностика лагов: профилирование сервера с помощью Spark, Timings и LagGoggles
Падение TPS ниже 20 — прямой сигнал к началу профилирования. Профилировщик показывает, какой плагин, чанк или процесс создаёт пиковую нагрузку на CPU и память. В 2026 году выбор обычно выглядит так: Spark подходит для глубокого анализа современных серверов, Timings — для версии 1.16 и совместимых сборок, LagGoggles — для визуального поиска проблемных объектов в игровом мире.
Spark: глубокий анализ производительности для версий 1.18+
Spark — основной profiler для современных серверов на Paper и Purpur. Он анализирует использование CPU отдельными потоками, расход памяти и активность тиков. Установите плагин из репозитория PaperMC и выполните базовую команду:
/spark profiler start --timeout 300
Эта команда запускает сбор данных на 5 минут. После остановки профилировщик сгенерирует ссылку на интерактивный отчёт. Главный инструмент в отчёте — флейм-граф. Он визуализирует дерево вызовов методов. Широкие блоки в верхней части графа указывают на методы, потребляющие больше всего процессорного времени. Ищите плагины с долей выше 5–7% от общего времени тика — это кандидаты на замену или донастройку.
Для быстрой проверки состояния сервера используйте:
/spark healthreport
Отчёт покажет средний TPS, длительность сборок мусора и объём занятой памяти. Если средняя длительность GC превышает 50 мс, переходите к проверке настройки JVM. Spark умеет отправлять отчёты автоматически через вебхуки в Discord или на сервер мониторинга. Это полезно для серверов с нестабильной нагрузкой: вы получите данные о моменте падения TPS, даже если не находились в игре. Настройка вебхука выполняется в конфигурационном файле плагина.
Timings: классический инструмент для серверов 1.16 и модовых сборок
Timings встроен в Paper и Spigot. Он остаётся практичным вариантом для серверов на версии 1.16 и сборок с большим количеством модов, где Spark может конфликтовать с другими модификациями. Запуск анализа:
/timings on
После сбора данных в течение 10–15 минут выполните:
/timings paste
Вы получите URL с табличным отчётом. Ключевой столбец — «Total». Он показывает, сколько процентов времени тика занял каждый плагин. Плагины с показателем выше 10% требуют внимания. Ограничение Timings в том, что он не показывает распределение нагрузки внутри плагина. Вы видите, что плагин X тормозит, но не знаете, какой именно метод. Для детального анализа переходите на Spark, если версия сервера позволяет.
LagGoggles: визуальное выявление источников лагов в мире
LagGoggles — клиентский мод, который сканирует игровой мир и подсвечивает источники задержек. Установите его на клиент и подключитесь к серверу. Откройте интерфейс мода и запустите сканирование. Через несколько секунд все блоки и сущности в радиусе видимости окрасятся в цвета от зелёного до красного. Красный цвет означает, что объект создаёт критическую нагрузку на тик сервера.
Типичные находки: скопления мобов в замкнутом пространстве, редстоун-схемы с частыми переключениями и воронки на активных чанках. Мод показывает конкретные координаты проблемы. Для устранения достаточно зачистить область или отключить механизм. LagGoggles особенно полезен на серверах с развитыми фермами и сортировочными системами.
Оптимизация JVM для Minecraft: настройка сборщика мусора
Сборщик мусора Java напрямую влияет на плавность работы сервера. Когда GC приостанавливает все потоки для очистки памяти, сервер испытывает микрозависания. Игроки ощущают это как кратковременные фризы или откаты. Правильный выбор GC и его параметров сокращает длительность пауз, но флаги нужно проверять с учётом версии Java, объёма памяти и фактического профиля нагрузки.
Оптимальные флаги JVM для Paper/Purpur 1.21
Для серверов Paper/Purpur 1.21 с кучей до 16 ГБ используйте G1GC. Этот сборщик разбивает кучу на регионы и обрабатывает их независимо, минимизируя паузы. Проверенный набор флагов для запуска:
java -Xms8G -Xmx8G \
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 \
-XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 \
-Dusing.aikars.flags=https://mcflags.emc.gs \
-Daikars.new.flags=true \
-jar server.jar nogui
Пояснение ключевых параметров: -Xms8G -Xmx8G фиксирует размер кучи, предотвращая затраты на её изменение в рантайме. MaxGCPauseMillis=200 задаёт целевое время паузы. AlwaysPreTouch выделяет память при старте, а не по мере необходимости. InitiatingHeapOccupancyPercent=15 запускает сборку мусора раньше, чем куча заполнится, что снижает вероятность длительной паузы в неподходящий момент.
Для версии 1.16 сначала проверьте совместимость используемой Java и ядра. Приведённые флаги нельзя переносить на старую сборку автоматически: часть параметров зависит от версии Java, а некоторые параметры может потребоваться убрать после проверки запуска и логов.
Выбор сборщика мусора: G1GC vs ZGC для Minecraft
G1GC — стандарт для большинства серверов Minecraft. Он обеспечивает предсказуемые паузы при куче до 16 ГБ. ZGC, доступный в современных версиях Java и доработанный в Java 21, ориентирован на очень короткие паузы даже при большой куче. Переход на ZGC оправдан после профилирования для серверов с высокой нагрузкой и выделенной памятью от 16 ГБ. Для включения ZGC замените флаги:
-XX:+UseZGC -XX:+ZGenerational
ZGC выполняет почти всю работу параллельно с потоками приложения. Плата за низкие паузы — повышенное потребление CPU. На слабых VPS с 2–4 ядрами G1GC остаётся предпочтительным выбором. Переход на ZGC не устранит лаги, вызванные плагином, генерацией чанков или слишком большим радиусом симуляции.
Лаги из-за чанков: снижаем нагрузку на CPU и диск
Генерация и тик чанков — один из главных потребителей ресурсов после плагинов. Каждый новый чанк требует вычислений для генерации ландшафта, а каждый загруженный чанк обрабатывается 20 раз в секунду. Контроль радиуса загрузки и предварительная генерация мира снижают вероятность резких просадок TPS.
Настройка view-distance и simulation-distance для баланса видимости и TPS
В файле server.properties два ключевых параметра:
- view-distance — радиус чанков, отправляемых клиенту для отрисовки. Значение 8 даёт радиус 128 блоков, что комфортно для игры.
- simulation-distance — радиус чанков, в которых обрабатывается логика: тик мобов, рост растений, работа механизмов. Значение 4 означает, что логика работает только в радиусе 64 блоков от игрока.
Для публичного сервера выживания с 20–30 игроками рекомендуемые значения: view-distance=7, simulation-distance=4. Для мини-игр, где важна скорость реакции, снижайте до view-distance=5, simulation-distance=3. Paper добавляет параметр no-tick-view-distance в paper-world-defaults.yml. Он задаёт радиус чанков, которые загружены в память, но не обрабатываются. Установите его равным view-distance, чтобы игроки видели мир без лишней нагрузки на CPU.
Предгенерация мира с помощью Chunky: устраняем лаги при исследовании
Когда игроки летят на элитрах или бегут по новым территориям, сервер генерирует чанки в реальном времени. Это вызывает резкие просадки TPS. Плагин Chunky решает проблему предварительной генерацией. Установите плагин и выполните:
/chunky radius 5000
/chunky start
Команда сгенерирует все чанки в радиусе 5000 блоков от спавна. Процесс ресурсоёмкий. Запускайте его в непиковые часы и контролируйте TPS через Spark. Для большого радиуса генерация может занять несколько часов. После завершения игроки смогут свободно перемещаться в пределах заданного радиуса без лагов генерации.
Выбор серверного ядра: Paper, Purpur и другие сборки для 1.16 и 1.21
Серверное ядро определяет базовый уровень производительности. Vanilla от Mojang не содержит оптимизаций и подходит для небольших серверов с простой нагрузкой. Spigot добавляет базовые оптимизации, но современные форки дают больше инструментов настройки. Для версии 1.16 отдельно проверяйте совместимость плагинов и конфигураций, а для 1.21 — актуальность Java, Paper/Purpur и параметров ядра.
Paper: стандарт производительности для публичных серверов
Paper — форк Spigot с сотнями патчей, направленных на снижение нагрузки. Ключевые оптимизации из коробки:
- entity-activation-range — мобы за пределами заданного радиуса от игрока не обрабатывают поведение, а просто замирают.
- use-faster-eigencraft-redstone — альтернативная реализация редстоуна, снижающая задержки при обработке сложных схем.
- per-player-mob-spawns — спавн мобов рассчитывается индивидуально для каждого игрока, распределяя нагрузку.
Конфигурация Paper сосредоточена в файлах paper-world-defaults.yml и paper-global.yml. Для серверов с фермами мобов настройте mob-spawner-tick-rate на значение 2 или 3, чтобы спавнеры обновлялись реже. Для серверов с большими редстоун-схемами включите alternate-current — систему расчёта сигналов, работающую быстрее стандартной.
Purpur: расширенные возможности и тонкая настройка
Purpur — форк Paper, добавляющий ещё один слой оптимизаций и настроек. Он позволяет контролировать поведение конкретных мобов: отключить случайные перемещения у овец, снизить частоту поиска пути у зомби, полностью убрать определённые механики. Конфигурация ведётся через purpur.yml. Пример настройки для снижения нагрузки от жителей:
villager:
lobotomize:
enabled: true
search-radius: 32
Эта опция отключает поведение жителей, если они не видят игрока в радиусе 32 блоков. Purpur включает все оптимизации Paper и добавляет собственные. Если сервер работает на Paper и вы ищете дополнительные резервы производительности, миграция на Purpur требует проверки совместимости плагинов и конфигураций после замены jar-файла.
Особенности оптимизации на платформе Aternos
Aternos — бесплатный хостинг с жёсткими ограничениями. Вы не можете менять флаги JVM, устанавливать произвольные jar-файлы ядер или получать доступ к консоли операционной системы. Ресурсы выделяются динамически и делятся между множеством серверов. Максимальная производительность достигается выбором ядра Paper из списка доступных в панели управления. Настройте view-distance=5 и simulation-distance=3 в файле server.properties через веб-интерфейс. Предгенерируйте мир на локальном ПК с помощью Chunky, затем загрузите готовый мир на Aternos через FTP или веб-загрузчик. Spark устанавливается как плагин и работает в полном объёме. Используйте его для выявления самых ресурсоёмких плагинов и заменяйте их на более лёгкие аналоги. Aternos подходит для тестирования конфигураций перед развёртыванием на VPS и для небольших серверов на 5–10 игроков, где не требуется высокая стабильность TPS.
Мониторинг и автоматизация: как поддерживать стабильную производительность
Разовые оптимизации теряют эффект после обновлений плагинов, роста базы игроков или изменений в мире. Постоянный мониторинг выявляет деградацию производительности до того, как её заметят игроки.
Автоматические отчёты Spark и алерты по TPS
Spark поддерживает фоновый мониторинг тиков. Включите его:
/spark tickmonitor
Эта команда запускает сбор статистики по каждому тику. При падении TPS ниже заданного порога Spark запишет профиль. Настройте автоматическую отправку отчётов на вебхук Discord через конфигурационный файл плагина. Для серверов с высокими требованиями к доступности настройте экспорт метрик в Prometheus через плагин Plan или аналогичный. Grafana построит дашборд с графиками TPS, онлайна и потребления памяти. Настройте алерты в Alertmanager на падение TPS ниже 18 в течение минуты. Регулярно, раз в месяц, пересматривайте конфигурацию сервера после обновлений ядра и плагинов.
FAQ: быстрый порядок диагностики лагов Minecraft сервера
С чего начать, если Minecraft сервер лагает?
Проверьте TPS и запустите /spark healthreport. Затем соберите профиль командой /spark profiler start --timeout 300 в период реальной нагрузки. Не меняйте JVM, радиусы чанков и настройки плагинов одновременно: иначе невозможно определить, какое изменение дало результат.
Что проверять первым: плагины, chunks или JVM?
Сначала проверьте отчёт Spark и длительность тиков. Если в отчёте виден конкретный плагин, начните с его конфигурации. При просадках во время перемещения по новым территориям проверьте генерацию chunks и используйте Chunky. Если отчёт показывает длинные паузы GC, переходите к настройке JVM.
Когда переходить с G1GC на ZGC?
Переходите на ZGC только после профилирования, если сервер использует современную Java, имеет достаточный запас CPU и большую кучу, а паузы GC остаются проблемой. На VPS с 2–4 ядрами и при умеренной нагрузке G1GC обычно практичнее.
Как понять, что виноват плагин?
В Spark ищите плагин с высокой долей общего времени тика и сопоставляйте результат с моментом появления лагов. Для предварительной оценки используйте порог 5–7%, а для Timings — показатель выше 10%. После отключения или перенастройки плагина повторите профиль в сопоставимых условиях.
Полный цикл оптимизации Minecraft сервера включает профилирование, настройку JVM, контроль чанков и выбор ядра. Начните с Spark в часы пиковой нагрузки. Отчёт покажет, какой компонент создаёт максимальную задержку. Затем настройте GC, ограничьте радиус симуляции чанков, предгенерируйте мир и проверьте Paper или Purpur. Настройте автоматический мониторинг, чтобы получать данные о проблемах раньше игроков.