Tropic Host

Лучшие VPS для сервера Minecraft: гид по выбору KVM NVMe хостинга и расчет железа

19 мин чтения
Tropic

Краткий вывод:


Содержание

  1. Критерии выбора VPS для Minecraft: почему важна частота на ядро, а не количество ядер
  2. Калькулятор сайзинга: расчет RAM, CPU и NVMe под Vanilla, Paper, Fabric и Forge
  3. Рейтинг конфигураций: лучшие VPS для сервера Minecraft на KVM NVMe
  4. Скрытые подводные камни игровых хостингов и дешевых VPS
  5. Пошаговый чеклист: развертывание и тюнинг сервера Minecraft на KVM VPS
  6. Часто задаваемые вопросы (FAQ)

Критерии выбора VPS для Minecraft: почему важна частота на ядро, а не количество ядер

Движок Minecraft фундаментально привязан к последовательному расчету мира: более 85% всей вычислительной нагрузки выполняет один главный поток — Server thread. Любая попытка сэкономить на аренде, выбрав многоядерный сервер на базе устаревших многопроцессорных платформ, неизбежно приводит к падению сервера в лаг-луп (can't keep up) даже при онлайне в 5–10 человек.

       50 мс на 1 такт (Бюджет времени для 20 TPS)
┌────────────────────────────────────────────────────────┐
│  Синхронный Tick Loop (Server Thread):                │
│  - ИИ сущностей и спавн мобов                          │
│  - Физика блоков, жидкостей и Redstone-схем           │
│  - Обработка коллизий и пакетов игроков                │
│  - Выполнение команд и логика плагинов                 │
└───────────────────────────────────────────┬────────────┘
                                            │ MSPT > 50 ms
                                            ▼
┌────────────────────────────────────────────────────────┐
│  Дроп TPS (пропуск тиков, резиновые откаты, фризы)    │
└────────────────────────────────────────────────────────┘

Архитектура tick loop и дефицит времени

Нормальная работа сервера рассчитывается по жесткому стандарту: ровно 20 TPS (Ticks Per Second). Математический бюджет одного такта составляет ровно 50 миллисекунд (1000 мс / 20 = 50 мс):

  • Внутри 50 мс главный tick loop обязан последовательно рассчитать координаты мобов, pathfinding ИИ, физику падения блоков, распространение редстоун-сигнала, тики растений и обработку входящих сетевых пакетов.
  • Показатель MSPT (Milliseconds Per Tick) отражает реальное время расчета тика. Пока MSPT держится в диапазоне 15–35 мс, сервер выдает стабильные 20 TPS.
  • Как только MSPT переваливает за 50 мс, сервер физически не успевает просчитать состояние мира за выделенную секунду. Возникает сброс кадров симуляции: мобы двигаются рывками, ломаемые блоки восстанавливаются (ghost blocks), а сетевой стек рассинхронизирует позиции игроков.

Современные форки ядра (Paper, Purpur, Pufferfish) выносят асинхронную генерацию чанков, трекинг сущностей и сохранение карты в фоновые потоки (I/O Worker Threads). Архитектура Folia разделяет мир на независимые тикающие регионы. Однако логика отдельно взятого региона или зоны вокруг базы с автофермами на спавне всё равно замыкается на одно физическое ядро. Если ядро слабое — сервер зависнет независимо от того, выделено виртуальной машине 4, 8 или 32 потока.

Иллюзия ядер: маркетинг старых Xeon против Ryzen 9 и Core i9

Хостинг-провайдеры бюджетного сегмента продают конфигурации вроде «8 vCPU / 16 GB RAM за 900 рублей», умалчивая о поколении процессора. За этим фасадом почти всегда скрываются списанные серверные чипы Intel Xeon E5-2680v3/v4 или E5-2690v2 десятилетней давности.

Итоговая скорость обработки тика определяется формулой:

$$\text{Single-Thread Speed} \approx \text{Тактовая частота (GHz)} \times \text{IPC (Instructions Per Cycle)}$$

Устаревшие чипы Xeon проигрывают по обоим параметрам: 1. Тактовая частота: под нагрузкой на ядро старый серверный Xeon выдает всего 2.6–3.0 ГГц. Современные потребительские и специализированные серверные платформы на Ryzen 9 (7950X, 9950X) или Intel Core i9 (13900K, 14900K) держат турбо-буст на уровне 5.4–5.8 ГГц. 2. IPC (производительность на такт): переход с микроархитектур Haswell/Broadwell на Zen 4/Zen 5 и Raptor Lake увеличил количество исполняемых инструкций за такт более чем на 70%.

Два ядра AMD Ryzen 9 7950X обрабатывают расчет тиков Minecraft в 3.5–4 раза быстрее, чем восемь ядер Intel Xeon E5-2680v4. Недостаток частоты и инструкций на такт невозможно компенсировать добавлением ядер — не задействованные в главном цикле потоки будут простаивать с нулевой нагрузкой.

Матрица процессоров и пороговые значения Geekbench 6 Single-Core

Ориентироваться на гигагерцы из рекламных буклетов нельзя: 3.5 ГГц на архитектуре 2014 года и 3.5 ГГц на архитектуре 2024 года показывают принципиально разную скорость. Объективный технический бенчмарк для подбора хостинга — синтетический тест Geekbench 6 Single-Core.

Модель CPU Микроархитектура Базовая / Буст частота Geekbench 6 (Single-Core) Максимальный профиль нагрузки Пригодность для Minecraft
Intel Xeon E5-2680v4 Broadwell (2016) 2.4 / 3.3 ГГц ~950 – 1 150 Vanilla 1.12.2 до 10 игроков; на версиях 1.20+ просадки TPS начинаются при 3–5 игроках Непригодно
Intel Xeon Gold 6248R Cascade Lake (2020) 3.0 / 4.0 ГГц ~1 450 – 1 650 Paper 1.20+ до 15–20 игроков без сложных Redstone-механизмов Минимальный допуск
AMD EPYC 7763 Zen 3 (2021) 2.45 / 3.5 ГГц ~1 550 – 1 750 До 25 игроков, легкие моды (до 50 модов), базовые плагины Удовлетворительно
AMD EPYC 9654 Zen 4 (2022) 2.4 / 3.7 ГГц ~2 050 – 2 250 30–45 игроков, средние модпаки (Fabric/Forge), стабильные 20 TPS Хорошо
Intel Core i9-13900K Raptor Lake (2022) 3.0 / 5.8 ГГц ~2 850 – 3 050 50+ игроков, тяжелые модпаки (200+ модов), генераторы мира Chunky Отлично
AMD Ryzen 9 7950X Zen 4 (2022) 4.5 / 5.7 ГГц ~2 900 – 3 150 60+ игроков, тяжелый Redstone, крупные анархо-серверы Эталон
AMD Ryzen 9 9950X Zen 5 (2024) 4.3 / 5.7 ГГц ~3 350 – 3 550 80+ игроков на спавне, экстремальный онлайн, максимальный запас по MSPT Абсолютный топ

Практические пороги производительности: * Менее 1 400 баллов: Сервер гарантированно уходит в фризы при элитра-полетах и динамической прогрузке чанков на версиях 1.18+ из-за увеличенной высоты мира (384 блока). * 1 800 – 2 300 баллов: Рабочий диапазон для классических проектов с оптимизированным ядром Purpur и онлайном до 30 человек. * Выше 2 800 баллов: Необходимый минимум для серверов с тяжелой сборкой модов (Create, GregTech, All The Mods) и масштабными механизмами.

Виртуализация: честный KVM против оверселлинга и CPU Steal Time

Высокая заявленная частота процессора теряет смысл, если виртуальная машина находится на перегруженном физическом сервере (ноде).

  • KVM (Kernel-based Virtual Machine): Полная аппаратная виртуализация. Каждому vCPU назначается поток гипервизора, изолируется адресное пространство RAM, виртуальный сервер получает прямой доступ к расширениям процессора (включая AVX-512, ускоряющий математические расчеты в современных Java-рантаймах вроде GraalVM).
  • LXC / OpenVZ: Контейнерная изоляция с общим ядром хоста. Провайдеры используют эту архитектуру для жесткого оверселлинга: на одно физическое ядро продается до 15–20 виртуальных ядер. Если соседний контейнер запускает компиляцию кода или спамит потоками, ваш сервер Minecraft лишается квантов процессорного времени.

Главный маркер скрытого оверселлинга — метрика CPU Steal Time. Она показывает процент времени, в течение которого виртуальный процессор был готов исполнять инструкции, но гипервизор отдал физический такт другому клиенту хостинга.

Для проверки параметров ноды на арендованном VPS используются штатные системные утилиты Linux:

# 1. Проверка физической модели процессора и максимальной частоты
lscpu | grep -E "Model name|CPU MHz|CPU max MHz|Virtualization"

# 2. Мониторинг выделения квантов процессора в реальном времени (5 отчетов с шагом 1 сек)
vmstat 1 5

В выводе команды vmstat анализируется крайний правый столбец в блоке cpu:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 842104  45120 1845120   0    0     4    28  412  850 42  8 50  0  0
 4  0      0 841920  45120 1845120   0    0     0    12  620 1102 78 12  0  0 10
  • Значение st = 0: Виртуализация чистая, все процессорные циклы передаются виртуальной машине без задержек.
  • Значение st > 3–5%: На ноде присутствует критический оверселлинг. Каждый процент Steal Time прямо конвертируется в микрозадержки главного потока Java Virtual Machine (JVM). Пауза в передаче процессорных циклов на 200–300 мс вызывает резкий спайк MSPT и визуальный лаг у всех подключенных игроков, независимо от объема выделенной оперативной памяти.

Калькулятор сайзинга: расчет RAM, CPU и NVMe под Vanilla, Paper, Fabric и Forge

Попытка выделить под игровой процесс всю доступную оперативную память хоста через аргумент -Xmx приводит к принудительному уничтожению процесса ядра демоном Linux oom-killer (сигнал SIGKILL, код завершения 137). Итоговая емкость виртуального сервера (VPS) под Minecraft рассчитывается строго по формуле совокупного расхода ресурсов:

$$RAM_{VPS} = RAM_{OS} + JVM_{Heap} + JVM_{OffHeap} + OS_{PageCache}$$

1. Накладные расходы ОС Linux и оверхед вне JVM Heap

Фактическое потребление памяти виртуальной машиной Java складывается из двух изолированных областей: JVM Heap (управляемая куча, задаваемая параметрами -Xms и -Xmx) и Off-Heap (память, запрашиваемая процессом напрямую у ядра ОС через системные вызовы mmap и malloc).

  • Базовый слой ОС ($RAM_{OS}$): 1.0–1.5 ГБ. Резервируется под нужды ядра Linux, демонов systemd, journald, стека SSH и агентов мониторинга (node_exporter). Дефицит в этом слое вытесняет системные страницы в swap, вызывая фризы тика (tick stutter).
  • Внекучевые структуры JVM ($JVM_{OffHeap}$): составляют от 20% до 35% поверх установленного размера -Xmx. Ограничение размера кучи не спасает от разрастания следующих компонентов:
  • Metaspace (-XX:MaxMetaspaceSize): область хранения метаданных классов. Для чистых ядер достаточно 256–384 МБ, но для сборок с модами лимит обязан быть расширен до -XX:MaxMetaspaceSize=512m (или 768m), иначе сервер упадет с ошибкой java.lang.OutOfMemoryError: Metaspace.
  • Thread Stacks (-Xss1m): каждый поток Java выделяет 1 МБ нативной памяти. При пуле сетевых потоков Netty, потоках генерации мира и асинхронных событиях плагинов 150 потоков забирают 150–200 МБ нативной RAM.
  • CodeCache (-XX:ReservedCodeCacheSize=256m): компилятор JIT (C1/C2) сохраняет скомпилированный нативный машинный код в этой области.
  • Сетевые буферы Direct ByteBuffers: фреймворк Netty аллоцирует внекучевую память для zero-copy операций при маршрутизации пакетов между клиентами и сервером.
  • Системный кэш ($OS_{PageCache}$): минимум 1.5–2 ГБ свободной физической памяти хоста. Ядро Linux использует ее для буферизации дисковых операций чтения/записи файлов регионов мира.
Правило продакшена: параметры -Xms и -Xmx должны быть строго равны между собой (-Xms == -Xmx). Это исключает динамическое выделение памяти операционной системой во время пиковых нагрузок, предотвращая фрагментацию адресного пространства и сопутствующие Stop-The-World паузы сборщика мусора.

2. Дисковая подсистема: почему SATA SSD и HDD ломают TPS

Мир Minecraft сегментирован в формате Anvil на файлы регионов с расширением .mca (world/region/r.X.Z.mca). Каждый файл объединяет 1024 чанка (сетка 32×32) в сжатом бинарном виде (NBT-структуры через zlib или LZ4).

  • Механика нагрузки: перемещение игроков на элитрах, использование телепортов и параллельная генерация чанков генерируют постоянный асинхронный поток мелкоблочного чтения и синхронных сбросов буферов на диск через системный вызов fsync().
  • HDD (75–150 IOPS): неприменимы. Очередь дисковых запросов (queue depth) мгновенно заполняется, показатель утилизации процессора по ожиданию ввода-вывода (%iowait) возрастает до 40–70%, а главный поток Server thread зависает в мертвом цикле ожидания десериализации NBT-данных.
  • SATA SSD (до 50 000–90 000 IOPS): ограничены интерфейсом AHCI, поддерживающим только одну очередь глубиной до 32 команд. При онлайне от 25–30 игроков задержка обработки транзакций вырастает до 10–25 мс, приводя к пропуску тиков и спаму в логах: Can't keep up! Is the server overloaded?.
  • NVMe PCIe 4.0 (от 300 000 до 800 000+ IOPS): аппаратный стандарт для стабильной работы. Протокол NVMe оперирует 64 000 очередей по 64 000 команд в каждой, взаимодействуя с процессором напрямую через линии PCIe с аппаратной задержкой менее 10 мкс. Для серверов Minecraft критичен параметр случайный доступ 4K IOPS (Random Read/Write $QD=1$), гарантирующий синхронное сохранение чанков без падения TPS ниже целевой отметки 20.0.

3. Специфика тяжелых модпаков (150+ модов на Forge и Fabric)

В то время как форки PaperMC и Purpur агрессивно оптимизируют распределение вычислений, отключая тики неактивных сущностей и разделяя обработку чанков по потокам, тяжелые сборки на Forge и NeoForge сталкиваются с архитектурными узкими местами:

  • Тики блочных сущностей (Tile Entities): автоматизированные заводы, шины Applied Energistics 2, механизмы Create и трубы передачи ресурсов принудительно обсчитываются в основном потоке тика. Временной лимит одного такта составляет строго 50 мс ($1000\text{ мс} / 20\text{ TPS}$). Если суммарный тик тайлов превышает 50 мс, сервер переходит в режим деградации (десинхронизация, откат инвентарей).
  • Утечки памяти и постоянная фрагментация: сторонние моды активно порождают короткоживущие объекты в поколении Young Generation (Eden space). Это перегружает сборщик мусора G1GC. Требуется ручная корректировка порогов запуска параллельного цикла: -XX:InitiatingHeapOccupancyPercent=45 и расширение резерва кучи -XX:G1ReservePercent=15.
  • Процессорный фактор: серверная часть Forge практически не поддается параллелизации тиков мира. Многоядерный процессор с низкой частотой (например, 16 ядер по 2.4 ГГц) покажет катастрофически низкий результат. Для Forge с 150+ модами критична однопоточная производительность процессора: тактовая частота от 4.5–5.0 ГГц и результат Geekbench 6 Single-Core не ниже 2200 баллов.
  • Экосистема Fabric: связка модов оптимизации (Lithium, FerriteCore, ModernFix, Krypton) сокращает потребление кучи на 25–40% по сравнению с Forge за счет переписанной топологии математических вычислений коллизий и оптимизации структур NBT в оперативной памяти.

4. Матрица распределения памяти, vCPU и накопителей под онлайн

Расчет конфигураций виртуального сервера составлен с учетом накладных расходов ОС, оверхеда JVM Off-Heap и профиля нагрузки на дисковую подсистему при стандартной дистанции прогрузки (view-distance: 10, simulation-distance: 6).

Ядро / Профиль сборки Онлайн (CCU) Аргументы памяти (-Xms / -Xmx) Минимальный тариф VPS (RAM / vCPU) Требования к накопителю и 4K IOPS Инженерные ограничения конфигурации
Vanilla 1.20+ 10 -Xms4G -Xmx4G 6 ГБ RAM / 2 vCPU NVMe PCIe 3.0 / $\ge 50k$ IOPS Отсутствие асинхронной обработки чанков; быстрый рост нагрузки при исследовании мира.
Vanilla 1.20+ 30 -Xms8G -Xmx8G 12 ГБ RAM / 4 vCPU NVMe PCIe 4.0 / $\ge 150k$ IOPS Предел масштабирования ванильного ядра. При 35+ игроках неизбежно падение TPS ниже 15.
PaperMC / Purpur 10 -Xms4G -Xmx4G 6 ГБ RAM / 2 vCPU NVMe PCIe 3.0 / $\ge 50k$ IOPS Оптимальный выбор для мини-серверов друзей. Нагрузка на систему минимальна.
PaperMC / Purpur 30 -Xms6G -Xmx6G 10 ГБ RAM / 4 vCPU NVMe PCIe 4.0 / $\ge 100k$ IOPS Балансировка сетевого ввода-вывода через Netty threads, view-distance удерживается на 10.
PaperMC / Purpur 50 -Xms10G -Xmx10G 16 ГБ RAM / 4–6 vCPU NVMe PCIe 4.0 / $\ge 200k$ IOPS Включение alternate-current в настройках, активация no-tick-view-distance: 12.
PaperMC / Purpur 100+ -Xms14G -Xmx14G 24 ГБ RAM / 6–8 vCPU NVMe PCIe 4.0 / $\ge 350k$ IOPS Обязателен запуск с Aikar's Flags, вынос баз данных (MySQL/CoreProtect) на внешний узел.
Fabric (Vanilla+ / QoL) 10 -Xms4G -Xmx4G 6 ГБ RAM / 2 vCPU NVMe PCIe 3.0 / $\ge 50k$ IOPS При использовании модов Lithium и FerriteCore потребление памяти стабильно ниже Vanilla на 30%.
Fabric (Vanilla+ / QoL) 30 -Xms8G -Xmx8G 12 ГБ RAM / 4 vCPU NVMe PCIe 4.0 / $\ge 120k$ IOPS Точная ванильная логика редстоуна без сбоев таймингов, характерных для PaperMC.
Fabric (Vanilla+ / QoL) 50 -Xms12G -Xmx12G 18 ГБ RAM / 6 vCPU NVMe PCIe 4.0 / $\ge 250k$ IOPS Требуется предварительная полная предгенерация мира плагином/модом Chunky.
Forge (150+ модов) 10 -Xms8G -Xmx8G 14 ГБ RAM / 4 vCPU NVMe PCIe 4.0 / $\ge 150k$ IOPS Минимальный старт для тяжелых техно-магических паков. Флаг -XX:MaxMetaspaceSize=512m.
Forge (150+ модов) 30 -Xms12G -Xmx12G 20 ГБ RAM / 6 vCPU NVMe PCIe 4.0 / $\ge 300k$ IOPS Жесткий лимит на chunk-loaders; мониторинг тиков сущностей через профайлер Spark.
Forge (150+ модов) 50+ -Xms16G -Xmx16G 28–32 ГБ RAM / 8 vCPU NVMe PCIe 4.0 Enterprise / $\ge 450k$ IOPS Экстремальная нагрузка на шину RAM; процессор строго с IPC уровня Ryzen 9 7950X / Intel i9-14900K.
# Базовый оптимизированный профиль запуска JVM для выделенного сервера (12 ГБ кучи на 16–18 ГБ VPS)
java -Xms12G -Xmx12G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1ReservePercent=15 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -XX:MaxMetaspaceSize=512m \
  -XX:ReservedCodeCacheSize=256m \
  -jar server.jar nogui

Рейтинг конфигураций: лучшие VPS для сервера Minecraft на KVM NVMe

Основной цикл тиков Minecraft (Game Tick Loop) однопоточен: расчет физики, сущностей, redstone-цепей и поведения мобов выполняется в одном ядре процессора. Серверы на базе многоядерных Intel Xeon или AMD EPYC серверных линеек с базовой частотой 2.2–2.8 ГГц физически не способны удерживать 20 TPS (Ticks Per Second) при онлайне более 20–30 игроков или на сборках с тяжелыми модами.

Для стабильной работы необходимы быстрые KVM NVMe VPS на десктопных или специализированных серверных high-frequency процессорах с частотой одного ядра от 4.5 до 5.7 ГГц, низколатентной оперативной памятью (DDR4 3200+ МГц / DDR5 5600+ МГц) и накопителями корпоративного класса без искусственных лимитов на случайный ввод-вывод (Random 4K IOPS).

Производительность сервера Minecraft (Single-Thread Bottleneck):
[Ryzen 9 7950X / Core i9-14900K @ 5.5+ GHz]  ──► 20 TPS при 80+ игроках (OK)
[Ryzen 5 3600 / 5600X @ 4.2 GHz]            ──► 20 TPS при 25-40 игроках (Лимит)
[Intel Xeon E5 / Gold @ 2.4-2.8 GHz]        ──► Просадки до 8-12 TPS, фризы тиков (FAIL)

Матрица конфигураций под типовые задачи сервера

При выборе тарифа определяющим фактором выступает баланс между тактовой частотой vCPU, объемом выделенной RAM под JVM-хип (-Xms / -Xmx) и сетевым стеком.

Профиль конфигурации Аппаратный стек (vCPU / RAM / Диск) Сеть и фильтрация Нагрузочный профиль (Онлайн / Моды) Оптимальные параметры JVM
Starter (Vanilla / Paper) 2 vCPU (Ryzen 5 5600X / Core i7-12700K)
4–6 ГБ DDR4/DDR5
40 ГБ NVMe PCIe 3.0
200–500 Мбит/с
Базовая L4 защита
выделенный IPv4
10–25 игроков
Чистый ванильный сервер, Paper/Purpur, минимальный набор плагинов
-Xms4G -Xmx4G
Aikar's Flags (G1GC)
Community (Modded / SMP) 4 vCPU (Ryzen 9 5950X / 7900X)
8–12 ГБ DDR5 ECC
80 ГБ NVMe PCIe 4.0
500 Мбит/с — 1 Гбит/с
Anti-DDoS Game (L4/L7)
выделенный IPv4
25–60 игроков
Тяжелые плагины (Towny, Dynmap), легкие Forge/Fabric сборки (до 60 модов)
-Xms8G -Xmx8G
ZGC / Shenandoah (JDK 21)
Hardcore / Heavy Modpack 4–6 vCPU (Ryzen 9 7950X / 9950X / i9-14900K)
16–24 ГБ DDR5 5600+ МГц
120 ГБ NVMe U.2/U.3 (Enterprise)
1 Гбит/с Guaranteed
Anti-DDoS Game с фильтрацией Handshake
выделенный IPv4
15–40 игроков
GregTech, ATM9, крупные индустриальные/магические сборки (200+ модов)
-Xms14G -Xmx14G
Aikar's Flags, tuned survivor ratios
Proxy / BungeeCord Network 2–4 vCPU (Core i9 / Ryzen 7)
4–8 ГБ RAM
30 ГБ NVMe
1–2.5 Гбит/с
L7 Game Scrubbing + Anycast
выделенный IPv4
150–500+ игроков через Velocity/Waterfall без игровой логики мира -Xms3G -Xmx3G
Aikar's Flags, Epoll Transport

Архитектурные критерии отбора тарифов

1. Аппаратный стек: Single-Core IPC и дисковая подсистема

Игры на движке JVM крайне чувствительны к скорости межъядерного взаимодействия (L3 Cache Latency) и времени выборки из ОЗУ.

  • Процессоры с 3D V-Cache и высоким IPC: Приоритет за AMD Ryzen 9 7950X3D / 7950X / 9950X и Intel Core i9-13900K/14900K. Разница в Single-Core между Ryzen 7950X и серверным Xeon Gold 6230 в сценарии расчета 4 000 сущностей превышает 180% в пользу первого.
  • NVMe без IOPS-троттлинга: Генерация мира на лету (плагины вроде Chunky или перемещение игроков на элитрах со скоростью 40 блоков/сек) создает пиковую нагрузку на синхронную запись чанков в формате Region (.mca). Бюджетные хостеры часто ставят лимит в 1 000–2 000 IOPS, после чего диск сваливается в I/O Wait, вызывая системный лаг (Can't keep up! Is the server overloaded?). Enterprise NVMe (Samsung PM9A3, Micron 7450) держат от 80 000 IOPS на случайную запись блоков 4K.

2. Сетевая инфраструктура: локация дата-центра и Direct Peering

Физическое удаление хоста напрямую формирует Round Trip Time (RTT). Для интерактивного геймплея (PvP, точный тайминг прыжков, расчет хитбоксов) допустимый предел задержки составляет 45 мс.

  • Игроки из РФ и СНГ: Оптимальная локация дата-центра — Москва (Tier III: DataPro, Ostankino, Selectel) или Санкт-Петербург. Прямое подключение к ключевым точкам обмена трафиком (Direct Peering с MSK-IX, DATA-IX, SPB-IX, а также прямые стыки с Ростелеком, МТС, Мегафон) дает сетевой пинг в диапазоне 2–15 мс для центральной части РФ и 20–35 мс для Урала.
  • Смешанная аудитория (СНГ + Европа): Оптимальны дата-центры в Хельсинки (Hetzner) или Таллине. Трафик идет через узлы FICIX и прямые магистрали с РФ без просадок через Франкфурт, удерживая пинг для Москвы на уровне 18–25 мс, для Варшавы и Берлина — 20–30 мс.
  • Сетевой адрес: Пул должен содержать чистый статический выделенный IPv4. NAT-маршрутизация с общим IP и выделением нестандартных портов отсекает возможность привязки читаемого SRV-домена без дополнительного проксирования.

3. Эшелонированная защита: Anti-DDoS Game

Minecraft использует собственный протокол поверх TCP (порт 25565). Стандартные сетевые экраны (L3/L4 фильтрация) пропускают векторы атак, направленные на уровень приложений (L7):

  • TCP SYN & ACK Flood: Забивание очереди сокетов на уровне ядра ОС хоста (net.ipv4.tcp_max_syn_backlog).
  • Minecraft Handshake Exploit: Отправка сотен тысяч фейковых пакетов инициализации подключения с некорректной длиной строки или заголовком, что моментально утилизирует 100% vCPU в потоке Netty.
  • Server List Ping Flood (MOTD DoS): Спам запросами обновления статуса сервера через бот-неты, перегружающий парсер JSON-пакетов.

Полноценный профиль Anti-DDoS Game (на базе решений Arbor/Voxility, StormWall или фильтров OVH Game) производит Deep Packet Inspection (DPI) трафика Minecraft: отсекает невалидные Handshake-пакеты до того, как они достигнут сетевого стека гостевой виртуальной машины KVM.


Аппаратный бенчмаркинг перед развертыванием: YABS

Перед установкой сервера и переносом миров обязателен независимый аудит хоста. Главный инструмент проверки — YABS benchmark (Yet Another Bench Script).

Запуск теста на чистой ОС (Debian 12 / Ubuntu 24.04):

curl -sL yabs.sh | bash -s -- -i -g

Параметры запуска -i -g исключают длительный сетевой тест Iperf, фокусируясь на диске и процессоре.

Контрольные пороговые значения YABS для боевого сервера Minecraft:

# 1. Тест накопителя (FIO Disk Speed)
4k random read   : >= 150 MB/s (минимум 38 000 IOPS)
4k random write  : >= 120 MB/s (минимум 30 000 IOPS)
1m sequential    : >= 1500 MB/s

# 2. Однопоточный процессорный тест (Geekbench 6 Single-Core)
Score < 1200     : Непригодно для онлайна > 15 человек (устаревшие Xeon E5/v3/v4).
Score 1500-2000  : Базовый уровень (Ryzen 5 3600, Core i7-10700K). Подходит для Vanilla.
Score 2400-3300+ : Целевой стандарт (Ryzen 9 7950X, Core i9-13900K/14900K). Держит 20 TPS.

# 3. CPU Steal Time (проверка на переподписку / оверселлинг)
Команда: vmstat 1 5
Столбец 'st' (Steal Time) строго обязан быть равен 0%.
Значение st > 2% означает, что соседние виртуальные машины на гипервизоре отбирают такты CPU.

Если по результатам Geekbench 6 Single-Core показатель ниже 2 200 баллов, а задержка случайного чтения 4K (fio latency) превышает 1.5 мс — тариф не относится к категории High-Frequency и вызовет систематические просадки тиков при росте карты свыше 5 ГБ.

Скрытые подводные камни игровых хостингов и дешевых VPS

Маркетинговые тарифы «Minecraft за 200 рублей» и сверхдешевые виртуальные серверы окупаются исключительно за счет жестких лимитов, скрытых в глубинах соглашений об уровне обслуживания (SLA) и правил эксплуатации. Развертывание Paper, Purpur или Forge на такой инфраструктуре неизбежно приводит к деградации TPS, искусственным задержкам тика и внезапным отключениям.

  • Панельный слотовый хостинг и критический оверселлинг.
    Классический слотовый хостинг продает не гарантированные ресурсы, а изоляцию внутри контейнеров Pterodactyl или Docker на перегруженной ноде. Провайдеры распределяют сотни игровых серверов на один процессор AMD Ryzen или Intel Xeon, рассчитывая, что 80% клиентов не держат онлайн выше двух человек. В моменты одновременного онлайна метрика CPU Steal Time (%st в утилите top) подскакивает до 25–40%. Это означает, что гипервизор принудительно отбирает физические такты ядра у вашего сервера в пользу «соседей». При пустом сервере панель также может переводить неактивные JVM-процессы в состояние сна (SIGSTOP), из-за чего первый зашедший игрок сталкивается с 15–30 секундами мертвого зависания инстанса.
  • Дешевый NAT VPS против полноценного сетевого стека.
    Сверхбюджетные тарифы часто разворачиваются как NAT VPS: серверу не выдается индивидуальный белый IP адрес, а выделяется общий IPv4 с перенаправлением диапазона случайных портов (например, 185.x.x.x:28472).
  • Minecraft по умолчанию ожидает порт 25565. Нестандартный порт требует обязательной настройки SRV-записей в DNS (_minecraft._tcp.domain.com), что создает проблемы для Bedrock-клиентов через мост Geyser, а также отсекает работу части систем автодоната и парсеров мониторингов.
  • Любая DDoS-атака или нарушение правил одним из десятков арендаторов общего IP приводит к мгновенному блэкхолингу (Null-Routing) адреса магистральным аплинком. Ваш сервер становится недоступен целиком без возможности подключить кастомную фильтрацию.
  • AUP хостинга и внезапная блокировка за CPU.
    Формирование и прогрев чанков (например, через плагин Chunky) — вычислительно затратный процесс, утилизирующий доступный vCPU на 100% в течение 2–6 часов непрерывной работы. Практически каждый бюджетный хостинг включает в AUP хостинга (Acceptable Use Policy) пункт о запрете «длительной непрерывной нагрузки». Автоматические скрипты мониторинга хостера фиксируют утилизацию ядра свыше 70–80% дольше 15 минут, после чего следует блокировка за CPU: сервер либо моментально глушится автоматикой, либо жестко ограничивается по cgroups (cpu.cfs_quota_us), роняя TPS сервера с 20.0 до 3.5.
  • Миф о «безлимитном RAM/SSD» и скрытые системные ограничители.
    Реклама «неограниченной оперативной памяти» игнорирует архитектуру JVM. Java-процессу требуется не только куча (-Xmx), но и нативная память (Metaspace, CodeCache, стек потоков). Дешевые хостеры компенсируют нехватку RAM агрессивным сбросом страниц в zRAM или медленный SWAP на диске, вызывая стоп-паузы сборщика мусора (GC pause) до 2000–5000 мс. При этом в системе выставляются скрытые низкоуровневые лимиты ядра:
  • Лимит дескрипторов файлов (ulimit -n): ограничение на уровне 1024 файлов ломает работу сервера с несколькими мирами или тяжелыми модами при попытке синхронно открыть чанки регионов (.mca).
  • Лимит системных процессов (pids.max): запрещает JVM выделять дополнительные потоки под асинхронные задачи плагинов, вызывая ошибку java.lang.OutOfMemoryError: unable to create new native thread.
  • Троттлинг IOPS: при превышении 100–150 операций ввода-вывода в секунду дисковая подсистема искусственно замедляется, блокируя автоматические сохранения мира (world save) и вызывая сообщение Can't keep up! Is the server overloaded?.

Пошаговый чеклист: развертывание и тюнинг сервера Minecraft на KVM VPS

Развертывание игрового сервера на виртуализации KVM требует детерминированного распределения аппаратных ресурсов: прямого доступа к инструкциям CPU, агрессивного ограничения дискового swap-кэширования для кучи Java и изоляции процесса от падений ОС. Конфигурация «из коробки» на чистом дистрибутиве приводит к просадке TPS до 11–13 единиц уже при одновременной генерации чанков тремя игроками. Ниже приведен регламент production-настройки окружения.

Шаг 1. Первичная подготовка ОС: настройка SWAP, swappiness и ulimit

Оптимальной базой выступает Ubuntu 24.04 LTS с ядром 6.8+. На чистом инстансе необходимо предотвратить сброс страниц памяти JVM в файл подкачки, настроить обработку файловых дескрипторов и выделить аварийный swap-буфер.

  1. Создание аварийного SWAP-файла (на NVMe-накопителе):
    Даже если памяти на VPS достаточно, аварийный файл подкачки объемом 2–4 ГБ защищает сервер от мгновенного убийства процесса ядром через OOM Killer при кратковременных утечках в плагинах. bash fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab
  2. Тюнинг ядра Linux под JVM:
    По умолчанию vm.swappiness в Ubuntu равен 60 — ядро начинает вытеснять неактивные участки кучи JVM в swap задолго до исчерпания RAM, что вызывает фризы (GC stop-the-world) на 2–5 секунд. Значение необходимо зажать до 10. Дополнительно увеличиваются лимиты виртуальной памяти (max_map_count) и дескрипторов.
    Откройте /etc/sysctl.d/99-minecraft.conf: ini # Агрессивное удержание памяти процессов в RAM vm.swappiness = 10 # Снижение задержек на сброс грязных страниц vm.dirty_ratio = 15 vm.dirty_background_ratio = 5 # Увеличение областей маппинга памяти для нативных библиотек vm.max_map_count = 262144 Примените параметры: bash sysctl --system
  3. Лимиты дескрипторов файлов (ulimit):
    Каждое сетевое подключение Netty, файл региона (.mca) и лог потребляют сокеты и файловые дескрипторы. Добавьте в /etc/security/limits.conf: text minecraft soft nofile 65535 minecraft hard nofile 65535

Шаг 2. Установка JVM и тюнинг сборщиков мусора (G1GC vs ZGC)

Minecraft на современных версиях (1.20.5+) строго требует Java 21. Рекомендуется использовать официальный пакет OpenJDK 21 либо GraalVM Community Edition для агрессивной JIT-компиляции.

Установка среды выполнения в Ubuntu 24.04 LTS:

apt update && apt install -y openjdk-21-jre-headless curl jq screen
useradd -r -m -d /opt/minecraft -s /bin/bash minecraft

Выбор Garbage Collector: G1GC против ZGC

  • G1GC (Garbage-First): Стандарт де-факто для инстансов с кучей (heap) от 4 до 16 ГБ. Обеспечивает наилучшую пропускную способность (throughput) тиков процессора ценой редких пауз в 10–20 мс, которые укладываются в рамки одного серверного тика (50 мс при 20 TPS).
  • ZGC (Generational ZGC): Сборщик мусора с субмиллисекундными паузами (менее 1 мс). Включается в Java 21 через флаги -XX:+UseZGC -XX:+ZGenerational. Требует на 15–20% больше ресурсов CPU на барьеры чтения/записи памяти. Оправдан только на многоядерных KVM VPS (от 6 vCPU и выше) с объемом выделенной памяти от 16–24 ГБ.

Аргументы запуска: Aikar Flags

Для серверов на базе Paper/Purpur с объемом RAM инстанса 8 ГБ (выделяем под кучу 6 ГБ, оставляя 2 ГБ ОС, нативным буферам Netty и скомпилированному коду) эталонным решением остаются адаптированные Aikar Flags:

java -Xms6G -Xmx6G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -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

Ключевой параметр здесь — -XX:+AlwaysPreTouch: JVM инициализирует и блокирует страницы памяти в физической RAM при старте процесса, исключая задержки на аллокацию страниц ядром во время игрового процесса. Флаги -Xms и -Xmx обязаны иметь строго одинаковое значение.

Шаг 3. Предгенерация чанков через Chunky: устранение 90% серверных лагов

Синхронная или асинхронная генерация новых регионов процедурным генератором шумов Перлина — самая тяжелая дисковая и вычислительная операция в Minecraft. Когда игрок на элитрах или лошади загружает неисследованный биом, показатель MSPT (Mean Seconds Per Tick) взлетает с 20 мс до 150+ мс, обваливая TPS.

Эту проблему полностью решает Chunky pregeneration:

  1. Скачайте плагин Chunky в директорию plugins/ и перезапустите сервер.
  2. Задайте центр, форму и радиус предгенерации (например, круг радиусом 5000 блоков вокруг нулевых координат): text chunky shape circle chunky center 0 0 chunky radius 5000
  3. Запустите генерацию: text chunky start
  4. Отслеживайте процесс через команду chunky progress. На 4–6 выделенных vCPU генерация мира радиусом 5000 блоков занимает от 2 до 5 часов. После завершения чанки записываются в файлы .mca на NVMe-диск. В дальнейшем сервер просто читает готовые блоки из файлового кэша с минимальной утилизацией процессора.

Шаг 4. Отказоустойчивый systemd сервис

Запуск сервера через утилиты screen вручную неприемлем для production-среды. Игровой сервер обязан контролироваться демоном инициализации ОС: перезапускаться при падениях (crash recovery), стартовать вместе с машиной и корректно передавать сигналы завершения работы.

Создайте юнит-файл /etc/systemd/system/minecraft.service:

[Unit]
Description=Minecraft Production Server
After=network.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft

# Корректное выделение лимита дескрипторов процессу
LimitNOFILE=65535

# Корректное завершение через RCON/FIFO либо SIGINT
ExecStart=/usr/bin/java -Xms6G -Xmx6G -XX:+UseG1GC -jar server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID

Restart=on-failure
RestartSec=10s
TimeoutStopSec=60s

# Защита от деградации системного окружения
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Активируйте и запустите службу:

systemctl daemon-reload
systemctl enable minecraft.service
systemctl start minecraft.service

Мониторинг логов в реальном времени осуществляется через стандартный стек:

journalctl -u minecraft.service -f -n 100

Шаг 5. Профилирование узких мест через Spark profiler

Вместо устаревшего timings v2, создававшего существенный оверхед на мониторинг тиков, промышленным стандартом диагностики производительности стал Spark profiler.

  1. Установите Spark в папку plugins/.
  2. Запустите 10-минутное фоновое сэмплирование во время пикового онлайна: text /spark sampler --timeout 600
  3. После завершения сэмплирования плагин генерирует уникальный веб-URL с интерактивным графом вызовов (flamegraph).

Анализ ключевых метрик отчета Spark: * MSPT (Mean Seconds Per Tick): Норма — до 40 мс (запас до троттлинга). Если значение стабильно держится выше 50 мс, сервер переходит в режим пропуска тиков (TPS < 20). * GC Activity: Раздел показывает длительность пауз сборщика мусора. Если сборка занимает более 3–5% от общего времени тика, перепроверьте объем Xmx или проверьте параметры G1GC. * Ticking Entities / Tile Entities: Инспектируйте ветки графа world - doTick. Основные виновники задержек — спавн мобов в ванильных фермах, большие скопления воронок (hoppers) и поиск путей мобами (pathfinding). * Plugin Execution Overhead: Spark с точностью до наносекунды локализует синхронные вызовы плагинов, блокирующие основной поток Server thread.

Часто задаваемые вопросы (FAQ)

В чем разница между KVM VPS и слотовым игровым хостингом для Minecraft?

На KVM VPS вы получаете изолированные ядра процессора без оверселлинга, честный объем RAM, выделенный IPv4 и полный root-доступ к Linux, тогда как слотовые хостинги перегружают ноды сотнями серверов и режут производительность при пиках.

Сколько ядер vCPU нужно для стабильного сервера Minecraft с модами?

Minecraft выполняет основной расчет игрового мира в одном потоке. Для сборки с модами оптимальны 2–4 ядра с максимальной частотой на ядро (от 4.5–5.0 ГГц на Ryzen 7000/9000 или Core i9), а не многоядерные серверы на старых Xeon.

Почему для сервера Minecraft обязателен NVMe SSD диск?

При перемещении игроков мир постоянно считывает и перезаписывает файлы регионов (.mca). Низкий latency и высокий случайный 4K IOPS у NVMe исключают фризы и микролаги при активной прогрузке чанков.

Какую операционную систему лучше выбрать для развертывания Minecraft на VPS?

Оптимален минимальный серверный дистрибутив Ubuntu 24.04 LTS или Debian 12 без GUI. Это экономит до 1.5–2 ГБ RAM и обеспечивает работу современного OpenJDK 21 с низким системным оверхедом.

Как защитить сервер Minecraft от DDoS-атак на KVM VPS?

Необходим KVM VPS с аппаратной Anti-DDoS защитой игрового уровня (L4/L7), фильтрующей UDP-флуд и специфичные атаки на порт 25565 (Handshake floods, бот-неты), либо связка прокси Velocity/BungeeCord с TCPShield/BotFilter.