Сколько RAM нужно серверу Minecraft: память тарифа, Java и запас

Как память тарифа делится между Java и системой, почему сервер падает с OutOfMemory и когда пора поднимать тариф. С примерами из панели EGN.

Команда EGN 9 мин чтения
Сколько RAM нужно серверу Minecraft: память тарифа, Java и запас
Содержание 19
  1. Коротко
  2. Как память делится
  3. Что такое -Xmx и -Xms
  4. Ориентиры по памяти
  5. Шаги: как подобрать память
  6. Пример: 10 друзей и пять плагинов
  7. Как понять, что памяти не хватает
  8. Пример расчёта для сборки
  9. Почему не стоит брать тариф с запасом в десять раз
  10. Памятка по RAM
  11. Симптом → причина → решение
  12. Как сделать в панели EGN: посмотреть память
  13. Частые ошибки
  14. Итог
  15. Вопросы и ответы
  16. Сколько RAM нужно для обычного сервера Minecraft?
  17. Что такое -Xmx?
  18. Почему сервер падает при 3 ГБ, если памяти вроде бы хватает?
  19. Можно ли поставить -Xmx больше тарифа?

Вопрос «сколько RAM нужно серверу Minecraft» задают чаще всего, и точного ответа одним числом нет. Память зависит от версии игры, ядра, числа игроков, плагинов и модов. Но есть простое правило, которое снимает большую часть вопросов: память тарифа делится между Java и системой, и если поставить больше, чем вам достаётся, сервер начнёт падать. Разберём, как это работает в панели EGN и как понять, что памяти не хватает.

Коротко

Тариф выдаёт вам определённый объём RAM, например 3 ГБ. Панель оставляет часть на систему и саму Java (по нашим настройкам куча занимает около 85 % памяти тарифа), а остальное отдаёт серверу как -Xmx. В разделе «Запуск» видно, сколько получает Java: на тестовом сервере с 3 ГБ это 2,5 ГБ, запас 0,5 ГБ. Чем больше игроков, плагинов и модов, тем больше памяти нужно. Если сервер падает с OutOfMemoryError, поднимайте тариф, а не просто увеличивайте -Xmx.

Как память делится

Память тарифа — это общий объём, который доступен контейнеру сервера. Из него Java берёт кучу (heap), где живут мир, игроки и плагины. Остаток нужен самой Java, системе и буферам сети. Если отдать всё Java, система начнёт свопить или упадёт сама, а сервер будет тормозить без причины.

В панели EGN это видно в блоке «Память и производительность» раздела «Запуск». На тестовом сервере с тарифом 3 ГБ карточки выглядят так: «3 ГБ памяти по тарифу», «2,5 ГБ получает Java (-Xmx)», «0,5 ГБ запас системе и Java вне кучи». Панель прямо предупреждает: если не хватает памяти, увеличьте тариф в личном кабинете.

Раздел «Запуск»: блок Java и карточки памяти тарифа, памяти для Java и запаса
Раздел «Запуск»: блок Java и карточки памяти тарифа, памяти для Java и запаса
Схема: 3 ГБ тарифа делятся на 2,5 ГБ для Java и 0,5 ГБ запаса
Схема: 3 ГБ тарифа делятся на 2,5 ГБ для Java и 0,5 ГБ запаса

Что такое -Xmx и -Xms

В командной строке Java память задаётся двумя флагами:

  • -Xms — стартовый объём кучи;
  • -Xmx — максимальный объём кучи.

Официальная документация Paper для примера использует такую команду:

Терминал
java -Xms4G -Xmx4G -jar paper.jar --nogui

Здесь выделяется 4 ГБ кучи сразу. В панели EGN строка запуска собирается за вас из памяти тарифа, поэтому обычно вручную её менять не нужно. Раскрыть её можно в блоке «Для опытных: команда запуска» раздела «Запуск». Про флаги вроде Aikar’s — в статье про флаги JVM.

Ориентиры по памяти

Это не гарантии, а порядок величин для Paper 1.21+ и 26.x без тяжёлой предгенерации. Точный расход зависит от плагинов, мира и числа загруженных чанков.

Сценарий Чего ждать от кучи Java
Пустой сервер Paper в наших проверках около 1 ГБ резидентной памяти после минуты покоя; ванильное ядро — около 0,5 ГБ
3–5 друзей, несколько плагинов 2 ГБ кучи обычно достаточно
10–15 игроков, 8–10 плагинов 3–4 ГБ кучи
20–40 игроков, регионы, экономика, веб-карта 5–8 ГБ кучи
Сборка на модах смотрите рекомендацию автора сборки, лёгкие сборки обычно от 4 ГБ, крупные требуют 8 ГБ и больше

Помните, что куча — это около 85 % тарифа: чтобы получить 4 ГБ кучи, нужен тариф примерно на 5 ГБ и выше, то есть на практике следующая ступень каталога. В каталоге EGN есть тарифы от 1,5 до 16 ГБ и выше, актуальный список — в личном кабинете.

Шаги: как подобрать память

  1. Посмотрите, сколько получает Java. Откройте «Запуск» и найдите блок «Память и производительность». Там видно значение -Xmx.

  2. Запустите сервер в обычном режиме. Дайте ему поработать с игроками. Обычно нагрузка растёт вечером, поэтому смотрите на пиковое время.

  3. Проверьте, не падает ли сервер. Если в «Доктор сервера» появляется причина OutOfMemoryError или сервер сам перезапускается, памяти не хватает.

  4. Прикиньте, что добавилось. Новые плагины и моды, рост числа игроков, большие карты и предгенерированный мир — всё это увеличивает нагрузку.

  5. Поднимайте тариф, а не -Xmx выше лимита. Если выставить -Xmx больше, чем у тарифа, сервер будет падать из-за нехватки памяти у контейнера.

Пример: 10 друзей и пять плагинов

Допустим, на сервере Paper 1.21.x играют 10 друзей, стоят LuckPerms, EssentialsX, WorldGuard и ещё два плагина. Если на тарифе 3 ГБ, Java получает 2,5 ГБ, и это обычно хватает для такого сервера, пока не растёт мир и не появляется много сущностей. Если через неделю добавили моды или сборку, запас придётся пересчитать: сборка с сотнями модов часто требует существенно больше памяти, чем плагинный сервер.

Точное число для конкретной сборки обычно указано в её описании. Ориентируйтесь на него, а не на общие гайды.

Как понять, что памяти не хватает

Нехватка памяти проявляется по-разному. Иногда сервер просто начинает тормозить, и игроки жалуются на рывки. Иногда он падает с OutOfMemoryError в логе, и тогда в «Доктор сервера» появляется понятная причина. Иногда сервер перезапускается сам, без явной ошибки, потому что система убивает процесс.

Простой способ отличить проблему памяти от проблемы процессора: если сервер тормозит при полном онлайне и растёт использование памяти, пора подумать о тарифе. Если память стабильна, а тормоза связаны с действиями игроков, смотрите процессор и настройки дальности. Подробный разбор симптомов — в статье про нехватку памяти.

Пример расчёта для сборки

Допустим, вы хотите сервер с модпаком, и в его описании рекомендуют тариф с запасом. Прежде чем покупать, сделайте три проверки. Во-первых, сколько модов в сборке: чем больше, тем больше памяти занимает сама игра. Во-вторых, сколько игроков будут заходить одновременно: каждый игрок добавляет нагрузку. В-третьих, будете ли вы регулярно добавлять новые моды: их число растёт со временем.

Если рекомендация сборки выше памяти вашего тарифа, не пытайтесь выставить -Xmx больше лимита. Поднимите тариф, и только потом запускайте сборку. Иначе сервер будет падать на старте, и причину придётся искать заново.

Почему не стоит брать тариф с запасом в десять раз

Больше памяти не всегда значит быстрее. Java сама решает, сколько занять, и чем больше куча, тем реже сборщик мусора работает. Иногда это даёт паузы, которые игроки замечают как лаги. Поэтому разумный запас важнее максимума: возьмите тариф, который покрывает пиковый онлайн с небольшим резервом, и смотрите на график нагрузки.

Памятка по RAM

  1. Проверьте, сколько памяти получает Java в разделе «Запуск».
  2. Сравните с описанием сборки или ядра и с числом игроков.
  3. Следите за графиком нагрузки в пиковые часы.
  4. Если падения повторяются, смотрите лог и доктора, а не только память.
  5. Пересматривайте тариф, когда добавляете моды или растёт онлайн.

Симптом → причина → решение

Симптом Причина Решение
OutOfMemoryError в логе Куча исчерпана Поднимите тариф или уменьшите число модов и плагинов
Сервер тормозит, памяти в графике много Проблема в процессоре или дистанциях Снизьте view-distance, смотрите процессор
Сервер сам перезапускается при пике онлайна Система убивает процесс из-за нехватки памяти Поднимите тариф, проверьте график нагрузки
Java получает меньше, чем ожидали Часть памяти отдана системе Это норма: см. блок «Память и производительность» в «Запуск»
Сборка не стартует на текущем тарифе Рекомендация сборки выше памяти тарифа Поднимите тариф до рекомендации, не выставляйте -Xmx выше лимита

Как сделать в панели EGN: посмотреть память

  1. Откройте «Запуск» в меню сервера.
  2. Найдите блок «Память и производительность»: там три карточки — память тарифа, память для Java, запас.
  3. Сверьте значение с рекомендацией сборки или ядра.
  4. Если памяти мало, откройте личный кабинет и выберите тариф с большей памятью.
  5. После смены тарифа перезапустите сервер и проверьте лог.

Частые ошибки

  • Ставите -Xmx больше тарифа. Контейнер получит нехватку памяти, и сервер упадёт без понятной причины.
  • Отдаёте Java всю память. Без запаса система тормозит и падает. Оставляйте запас, как в панели.
  • Ищете причину лагов в RAM, когда дело в CPU. Если памяти хватает, а сервер тормозит, смотрите на процессор и дистанции. Как отличить нехватку процессора, памяти и диска, разбирает статья про лаги: CPU, RAM или диск.
  • Не учитываете моды. Сборка с сотнями модов съедает память намного быстрее обычного сервера.
  • Ожидаете, что памяти хватит навсегда. Мир растёт, игроков становится больше, нагрузка меняется. Пересматривайте тариф раз в несколько месяцев.
OutOfMemoryError — это нехватка памяти, а не баг мода

Если в логе появляется OutOfMemoryError, сервер упёрся в лимит кучи. Помогает большой тариф или меньшее число модов и плагинов, а не правка конфигов игры.

Смотрите график нагрузки

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

Итог

Память сервера Minecraft делится между Java и системой. Панель показывает, сколько получает Java, и задаёт -Xmx автоматически. Больше игроков, плагинов и модов — больше памяти. Если сервер падает с нехваткой памяти, поднимайте тариф, а не выставляйте -Xmx выше лимита. Точное число для сборки ищите в её описании.

Вопросы и ответы

Сколько RAM нужно для обычного сервера Minecraft?

Зависит от числа игроков и плагинов. Для небольшого сервера на Paper с несколькими плагинами хватает тарифа, где Java получает около 2–3 ГБ. Для сборок с модами нужен запас больше.

Что такое -Xmx?

Максимальный объём кучи Java. Панель выставляет его сама, исходя из памяти тарифа.

Почему сервер падает при 3 ГБ, если памяти вроде бы хватает?

Потому что Java получает не все 3 ГБ, а часть уходит на систему и на Java вне кучи. Смотрите значение «получает Java» в «Запуск».

Можно ли поставить -Xmx больше тарифа?

Нет. Контейнер не даст больше памяти, чем у тарифа, и сервер начнёт падать.

Сервер под Minecraft за пару минут — egnetwork.ru

Читать далее

Вся рубрика →