- Что такое start.bat и зачем он нужен
- SERVER_FILE_NAME — что это и как выбрать
- Отличия bat и bash скриптов
- Как выбрать память для сервера Minecraft
- Почему больше памяти не всегда лучше
- Флаги JVM для производительности — что и зачем
- Особенности запуска на Windows и Linux
- Ведение журнала сборки мусора (GC logging)
- Практические советы по настройке start.bat
- Пример итогового start.bat для Windows
- Пример start.sh для Linux с перезапуском
- Заключение
- Полезные ссылки
Если вы когда-нибудь задумывались, как же запустить свой Minecraft сервер, то вы попали по адресу! В этом посте мы разберём, что такое start.bat (или start.sh для Linux), как правильно настроить запуск сервера, какие параметры памяти и флаги JVM использовать, и почему это важно для производительности вашего игрового мира.
Что такое start.bat и зачем он нужен
Start.bat — это ваш персональный лаунчер для сервера Minecraft на Windows. Представьте его как дирижёра оркестра: он запускает Java с нужными параметрами и поднимает сервер. Для Linux аналог — скрипт start.sh, который выполняет ту же роль, но в формате bash.
Внутри этого файла прописывается команда запуска Java с указанием файла ядра сервера (обычно .jar), параметров памяти и флагов для оптимизации.
SERVER_FILE_NAME — что это и как выбрать
В скрипте вы увидите переменную SERVER_FILE_NAME. Это просто имя вашего серверного ядра — файла .jar, который запускает Minecraft сервер. Например, если у вас файл называется spigot.jar или paper.jar, то в скрипте нужно заменить SERVER_FILE_NAME на это имя.
java -Xmx2G -Xms2G -jar spigot.jar nogui
Замените spigot.jar на своё имя файла, и всё готово к запуску.
Отличия bat и bash скриптов
- Windows (bat): команды пишутся в формате
.bat, например:
java -Xmx2G -Xms2G -jar spigot.jar nogui
PAUSE
- Linux (bash): используется
.shс синтаксисом bash, например:
#!/bin/bash
while true; do
java -Xmx2G -Xms2G -jar spigot.jar nogui
echo "Restarting in 5 seconds..."
sleep 5
done
Обратите внимание, что в Linux часто используют цикл while true; do ... done для автоматического перезапуска сервера при сбоях. Но будьте осторожны — бесконечный цикл может привести к излишней нагрузке и заполнению логов, если сервер падает постоянно.
Как выбрать память для сервера Minecraft
Память — это топливо для вашего сервера. Рекомендуется выделять 6–10 ГБ памяти, даже если у вас мало игроков. Почему? Потому что Minecraft любит жрать память, а сборщик мусора G1GC работает лучше при большем объёме.
| Память (RAM) | Рекомендации по Xmx и Xms | Комментарии |
|---|---|---|
| < 6 ГБ | Xmx = Xms = доступная память - 1 ГБ | Оставьте память для ОС |
| 6–10 ГБ | Xmx = Xms = 6–10 ГБ | Оптимально для большинства серверов |
| > 12 ГБ | Xmx = Xms = выделенная память с дополнительными флагами | Настройка флагов JVM для больших объёмов |
Xmx — максимальный объём памяти, который сервер может использовать.
Xms — стартовый объём памяти при запуске.
Важно: Xmx и Xms обычно ставят одинаковыми, чтобы избежать лишних затрат на расширение кучи во время работы.
Почему больше памяти не всегда лучше
Увеличение памяти сверх 10–12 ГБ не даёт пропорционального прироста производительности. Это называется точка убывающей отдачи — дальше вы просто тратите ресурсы впустую. Minecraft не умеет эффективно использовать сверхбольшие объёмы памяти, а сборщик мусора начинает работать дольше.
Флаги JVM для производительности — что и зачем
PaperSpigot и другие оптимизированные ядра рекомендуют использовать набор флагов JVM, которые улучшают сборку мусора и общую производительность.
Пример флагов для 6–10 ГБ памяти:
java -Xms10G -Xmx10G -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=true -Daikars.new.flags=true \
-jar paper.jar --nogui
Что делают ключевые флаги:
-XX:+UseG1GC— включает сборщик мусора G1, оптимальный для Minecraft.-XX:MaxGCPauseMillis=200— ограничивает паузу сборки мусора 200 мс.-XX:+UnlockExperimentalVMOptions— разрешает экспериментальные опции.-XX:+DisableExplicitGC— запрещает вызовы System.gc(), которые могут тормозить сервер.-XX:+AlwaysPreTouch— заранее выделяет всю память, чтобы избежать задержек.-Dusing.aikars.flags=true— активирует набор оптимизаций от Aikar.
Особенности запуска на Windows и Linux
| Платформа | Пример команды запуска | Особенности |
|---|---|---|
| Windows | java -Xmx2G -Xms2G -jar spigot.jar nogui + PAUSE |
PAUSE останавливает окно после завершения, полезно для отладки, но не нужен в продакшене |
| Linux | while true; do java -Xmx2G -Xms2G -jar spigot.jar nogui; sleep 5; done |
Цикл перезапуска, требует контроля логов и ресурсов |
Ведение журнала сборки мусора (GC logging)
Для диагностики проблем с памятью полезно включить логирование GC.
- Java 8–10:
-Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps \
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M
- Java 11+:
-Xlog:gc*:logs/gc.log:time,uptime:filecount=5,filesize=1M
Практические советы по настройке start.bat
- Всегда заменяйте
SERVER_FILE_NAMEна имя вашего.jarфайла. - Устанавливайте Xmx и Xms равными, чтобы избежать лишних затрат на расширение памяти.
- Оставляйте минимум 1–2 ГБ памяти для операционной системы.
- Используйте рекомендованные флаги JVM для улучшения производительности.
- В Windows
PAUSEполезен для отладки, но в продакшене его лучше убрать. - В Linux будьте осторожны с бесконечным циклом
while true, чтобы не создавать нагрузку при постоянных сбоях. - Для автоматического перезапуска на Linux лучше использовать
systemdилиscreen/tmuxвместо бесконечного цикла.
Пример итогового start.bat для Windows
@echo off
java -Xmx6G -Xms6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -jar paper.jar nogui
Пример start.sh для Linux с перезапуском
#!/bin/bash
while true; do
java -Xmx6G -Xms6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -jar paper.jar nogui
echo "Сервер упал, перезапуск через 5 секунд..."
sleep 5
done
Заключение
Настройка start.bat или start.sh — это искусство балансировки памяти, производительности и стабильности. Правильный выбор параметров памяти и JVM-флагов позволит вашему Minecraft серверу работать плавно и без лагов, а грамотный скрипт запуска — обеспечит удобство и безопасность.
Полезные ссылки
- mcdev.su — старт батник и флаги JVM
- forum-minecraft.ru — обсуждение start.bat и start.sh
- rubukkit.org — перенаправление start.bat на Java 8
Теперь вы вооружены знаниями, чтобы создать свой идеальный Minecraft сервер! Не бойтесь экспериментировать с памятью и флагами, но помните про баланс и стабильность. Удачи в кубическом мире!