Как ускорить запуск сервера

Введение

На выделенном сервере с Ubuntu под управлением Proxmox от proxify.cloud Minecraft‑сервер может загружаться долго из‑за устаревших настроек JVM, медленного диска, слабой предварительной генерации мира или захламлённости плагинами. Инструкция поможет сократить время запуска в 2–4 раза без потери стабильности. Все действия выполняются через SSH или консоль панели proxify.cloud.


Шаг 1: Проверка ресурсов в панели proxify.cloud

  1. В панели управления перейдите в раздел вашей виртуальной машины (LXC/VM).
  2. Убедитесь, что выделено не менее 4 ГБ ОЗУ, а процессору назначено минимум 2 ядра. Если ресурсы ниже — увеличьте, затем перезагрузите контейнер.
  3. Убедитесь, что корневой диск — SSD (в панели указывается тип хранилища). Для чанков и дампа кучи скорость диска критична.
  4. Рекомендуется отключить Swap или выставить его на SSD-раздел, иначе swap на медленном HDD сильно замедлит старт.

Шаг 2: Выбор быстрого ядра и установка Java

Проприетарный Vanilla сервер загружается дольше всех из‑за плохой работы с потоками и GC. Используйте Paper или Purpur.

# Установка OpenJDK 17 (рекомендуется)
sudo apt update && sudo apt install openjdk-17-jdk -y
java -version

Скачайте последнюю сборку Paper с официального API:

wget https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/450/downloads/paper-1.20.4-450.jar -O paper.jar

Создайте для сервера отдельную папку и переместите jar:

mkdir /opt/minecraft && mv paper.jar /opt/minecraft/

Шаг 3: Настройка параметров JVM (Aikar’s flags)

Без правильных аргументов JVM сервер долго прогревает кэш и часто останавливается на GC. Используйте следующие флаги для Paper/Purpur (замените -Xms и -Xmx под доступную память).

-Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-XX:G1HeapRegionSize=4M -XX:G1NewSizePercent=30 -XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 -XX:G1ReservePercent=20 \ 
-XX:+OptimizeStringConcat -XX:+UseFastUnorderedTimeStamps \
-Dfile.encoding=UTF-8 -Daikars.new.flags=true

Пояснение:

  • AlwaysPreTouch – предварительно выделяет всю память при старте, что может замедлить первый запуск, но последующие становятся быстрее.
  • -XX:+DisableExplicitGC – запрещает ручные вызовы GC от системных библиотек.
  • Флаги Aikar’s оптимизируют G1GC для Minecraft: снижают частоту полных GC и уменьшают время пауз.

Создайте скрипт запуска start.sh:

#!/bin/bash
cd /opt/minecraft
java -Xms6G -Xmx6G -XX:+UseG1GC ... -jar paper.jar nogui

Сделайте исполняемым: chmod +x start.sh


Шаг 4: Предварительная генерация мира (Chunk Pre-generation)

Генерация новых чанков во время игры — главный тормоз, поэтому лучше предварительно прогрузить весь мир (хотя бы радиус 200–500 блоков).

  1. Установите плагины Chunky или WorldBorder (скачать и поместить в plugins/).
  2. Запустите сервер один раз, чтобы плагин загрузился, затем остановите.
  3. Отредактируйте config.yml плагина или выполните команды на запущенном сервере.

Chunky (рекомендую):
В консоли сервера (или через RCON):

/chunky world world  
/chunky radius 300  
/chunky start

После завершения — прогрузка чанков отключится, и мир будет готов к работе.

Важно: Для серверов с картами размером >10 000 блоков лучше запускать предгенерацию в фоновом режиме с пониженным приоритетом, чтобы не загружать процессор на 100%:

/chunky throttle 1

Шаг 5: Оптимизация конфигурационных файлов

Тонкая настройка server.properties, paper.yml и spigot.yml снижает нагрузку на старте.

server.properties

view-distance=6        # снизить с 10 до 6
simulation-distance=6  # держать не больше view-distance
max-tick-time=180000   # таймаут на тик (мс)
network-compression-threshold=256

paper.yml

chunk-loading:  
  # Ускоряет загрузку регионов при старте  
  load-threads: 4  
  max-chunk-groups: 100  
per-player-mob-spawns: true  
optimization:  
  # Буферизация сохранения чанков  
  use-save-on-stop: false  
  save-queue-size: 2048  

spigot.yml

world-settings:  
  default:  
    merge-radius:  
      item: 4.0  
      exp: 4.0  
    mob-spawn-range: 4          # снизить с 8 до 4  
    entity-activation-range: …  # оставить по умолчанию или уменьшить

После изменений перезагрузите сервер.


Шаг 6: Использование tmpfs (RAM-диск) для ускорения загрузки

Самые частые операции при старте — чтение файлов региона и кэша. Если оперативной памяти достаточно (от 8 ГБ на сервер), можно смонтировать часть мира в tmpfs.

  1. Создайте точку монтирования:
    mkdir /opt/minecraft/world/tmp_cache
    
  2. Включите в fstab:
    tmpfs /opt/minecraft/world/tmp