RE:NODE

Ресурсы11 мин чтения

RAM для сервера Valheim по возрасту мира

Память сервера Valheim: реальные цифры RAM по размеру группы и возрасту мира, почему терраформинг и исследование стоят дороже игроков и когда всё меняют моды.

0 прочтений

Выделенному серверу Valheim нужно 2 ГБ памяти на трёх игроков в новом мире, 3-4 ГБ на группу из четырёх-шести человек с несколькими базами и 4-6 ГБ на полную группу из десяти в мире, где играют уже несколько месяцев. Серверу с модами на BepInEx и десятком контентных модов нужно 6-8 ГБ. Число игроков - самый слабый из трёх факторов: сервер держит в памяти весь мир, поэтому цифру определяет то, какая часть карты исследована, сколько построено и, прежде всего, сколько земли перекопано терраформингом. Мир, который поначалу спокойно жил в 2 ГБ, к тому моменту, как группа доберётся до Туманных земель, может потребовать вдвое больше, хотя никто новый не присоединился.

Что сервер Valheim держит в памяти#

Мир Valheim хранится как большая коллекция объектов, которые игра называет ZDO, - по одному на каждое дерево, камень, существо, элемент постройки, сундук, выброшенный предмет, тележку, корабль и портал, которые существуют или когда-либо были изменены. Сохранение мира (Name.db) - это по сути та же коллекция, записанная на диск, и выделенный сервер при запуске загружает её целиком в память и держит там. Ничего не выгружается из-за того, что рядом никого нет.

Это отличает Valheim от Minecraft, и для расчёта ресурсов это важно:

  • Сервер не симулирует мир. Каждую зону симулирует первый клиент, который в неё вошёл; сервер хранит объекты и передаёт изменения между игроками. Поэтому нагрузка на CPU умеренная, а память не зависит от того, где стоят игроки.
  • Сервер держит всё. База, которую никто не посещал три недели, стоит ровно столько же памяти, сколько та, где все собрались сегодня вечером.
  • Память следует за файлом мира. Файл .db, выросший с 15 МБ до 150 МБ, - самый наглядный признак того, что серверу нужно больше, чем вначале.

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

RAM по размеру группы и возрасту мира#

Эти цифры верны для ванильного сервера как с включённым, так и с выключенным crossplay - crossplay добавляет промежуточный relay, а не заметный объём памяти.

Группа и мирRAMПримечания
1-3 игрока, новый мир2 GBКомфортно, пока мир не исследован как следует
4-6 игроков, несколько баз3-4 GBТипичный случай
7-10 игроков, исследованный мир4-6 GBБольшие постройки и терраформинг начинают стоить денег
С модами, 10+ модов BepInEx6-8 GBЗависит от того, что добавляют моды
Расширенный мир или 20+ игроков (моды)8 GB и большеМоды меняют все допущения

Лимит в десять игроков зашит в игру, поэтому ванильные строки на нём заканчиваются. Сервер движется вниз по таблице со временем: группа из четырёх в первую неделю прекрасно живёт в 2 ГБ, а та же группа через несколько месяцев с раскинувшейся базой в каждом биоме - уже может и не уложиться.

В качестве рабочего правила время от времени проверяйте в файловом менеджере размер файла .db вашего мира. До примерно 50 МБ хватает 2-3 ГБ. От 50 до 150 МБ - туда приходит большинство долгоживущих миров - рассчитывайте на 4 ГБ. Мир больше 200 МБ - это сильно застроенный или сильно терраформированный мир, и ему стоит дать 6 ГБ. Это эмпирическое правило из наблюдений за серверами, а не формула - представление мира в памяти в несколько раз больше файла, и насколько больше, зависит от того, что это за объекты.

Что делает мир дорогим#

Мир Valheim растёт из-за четырёх вещей, и стоят они по-разному.

Исследование

Каждая зона, которую игрок посещает впервые, генерируется: её деревья, камни, кусты, существа, локации и входы в подземелья становятся объектами мира. Неисследованная зона ничего не стоит. Группа, которая проплыла всю карту в поисках Королевы, сгенерировала значительную часть мира, и каждая из этих зон теперь хранится. Исследование - это медленный и равномерный рост, который есть у любого мира.

Строительство

Каждый поставленный элемент - объект: каждая стена, пол, балка, факел, сундук и рамка для предметов. Скромный длинный дом - это несколько сотен элементов; зрелая база с большим залом, фермой, хабом порталов, плавильным двором и декоративной каменной кладкой - тысячи. Сундуки добавляют своё содержимое. Умножьте на число баз и на число игроков, каждый из которых строит своё.

Терраформинг

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

Всё, что лежит без дела

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

Сохранения, зависание при сохранении и память#

Valheim записывает мир по таймеру, который задаёт -saveinterval, по умолчанию 1800 секунд. На большом мире размер ощущается именно при сохранении: сервер сериализует всё, выделяя при этом память, а игроки видят короткую заминку или полное зависание. Это записывается в лог:

code
World saved ( 1243.512ms )

Это число - полезный показатель здоровья. Несколько сотен миллисекунд на молодом мире - норма. Несколько секунд на зрелом означают, что мир большой, и это же момент пика потребления памяти, потому что сервер одновременно держит мир и его сериализованную копию.

Два следствия для расчёта ресурсов:

  1. Оставляйте запас над обычным уровнем. Сервер, который в простое держится на 90% лимита, может быть вытолкнут за него сохранением. На RE:NODE сервер, достигший лимита памяти, останавливается и чисто перезапускается, а не уходит в swap, - для машины это правильное поведение, но означает потерю всего, что было после предыдущего сохранения. Короткие интервалы сохранения уменьшают эту цену.
  2. Сократите интервал на большом мире. -saveinterval 600 делает сохранения чаще, но не дороже, и ограничивает потерю десятью минутами, если процесс когда-нибудь остановится некорректно. Все параметры запуска перечислены в руководстве по выделенному серверу Valheim.

Автоматические резервные копии, которые задают -backups, -backupshort и -backuplong, - это копии .db на диске, а не в памяти. Они стоят места на диске и больше ничего.

Следите за цифрами самого сервера#

Команд для производительности в Valheim немного, но размер мира он всё же показывает.

  • Строка подключений в логе. Свежие сборки сервера периодически выводят строку статуса с числом подключений и текущим количеством ZDO. Следить за ростом этого числа неделями - значит следить за ростом памяти. Если ваша сборка его выводит, записывайте цифру раз в неделю.
  • Размер файла `.db`. Виден в файловом менеджере или через SFTP, в worlds_local. Самая дешёвая линия тренда, которую можно вести.
  • График памяти. В панели он находится рядом с графиком CPU и строится относительно лимита. У здорового сервера Valheim после перезапуска память несколько часов растёт, пока игроки посещают области и среда выполнения устаканивается, а затем выходит на плато. Линия, которая растёт днями и не выравнивается, - это либо растущий мир, либо мод.

Чего вы не увидите, так это понятной ошибки нехватки памяти. Когда серверу Valheim внутри контейнера не хватает памяти, лог просто обрывается. Если последние строки пришлись на середину сохранения, оно может быть повреждено; в следующий раз сервер откатится к предыдущему файлу. Как от этого восстановиться, описано в статье backup Valheim и повреждение мира.

Моды и память#

Сам BepInEx лёгкий: фреймворк и горстка плагинов для удобства добавляют, может быть, пару сотен мегабайт. Картину меняют контентные моды и моды мира.

  • Серверные утилиты (backup, мосты в Discord, инструменты администратора, Server Devcommands) стоят немного.
  • Контентные моды, добавляющие существ, предметы, биомы или подземелья, добавляют свои ассеты каждому клиенту, а заспавненные объекты - в мир. Особенно паки существ кладут на карту больше постоянных объектов.
  • Моды правил и спавна, повышающие шанс выпадения, частоту спавна или размер стаков, косвенно добавляют объекты - больше дропа, больше существ, больше содержимого в сундуках.
  • Моды расширения мира, например Expand World Size, увеличивают саму карту, а вместе с ней и число зон, которые можно сгенерировать и сохранить. Они меняют расчёт сильнее, чем моды любого другого вида.
  • Моды на число игроков, поднимающие ограничение в десять человек, добавляют накладные расходы на подключения и, что важнее, новых строителей.

Практическое правило: добавьте 1-2 ГБ на скромный список контентных модов, а дальше считайте по миру. Серверу с большим количеством модов, расширенным миром и двадцатью игроками нужно 8 ГБ или больше, и это совсем другой проект, чем ванильный сервер. Установка и то, какие моды должны стоять с обеих сторон, описаны в статье моды Valheim на BepInEx на сервере.

Как сделать мир дешевле#

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

  1. Уберите то, чем никто не пользуется. Заброшенные аванпосты, неудачные постройки, дублирующиеся порталы, причал, полный гниющих карве. Разбор молотом удаляет объекты, но не отменяет терраформинг.
  2. Проредите загоны. Сотня приручённых животных - это сотня постоянных объектов с AI, который должен обсчитывать владелец зоны. Двадцати хватит любой ферме.
  3. Прекратите массовый терраформинг, когда база уже распланирована. Мощёная дорога к каждому порталу красива и дорога.
  4. Пользуйтесь модом очистки осторожно. Upgrade World - серверный мод, который может удалять конкретные объекты и сбрасывать зоны, где никто не строил, а это ещё и позволяет новому контенту сгенерироваться там после обновления игры. Он мощный, и последствия необратимы; сначала сделайте backup и прочитайте его документацию, чтобы знать точные команды.
  5. Начните новый мир для новой главы. Персонажи хранятся на машине каждого игрока, поэтому в свежем мире у всех остаются снаряжение и навыки. Многие группы так и делают, когда проходят текущий контент, вместо того чтобы тащить дальше мир на 300 МБ.

CPU, диск и остальное#

В Valheim люди редко первым упираются в память; первыми приходят лаги. Поскольку зоны симулируют клиенты, большинство лагов в Valheim - это игрок с плохим соединением, владеющий загруженной зоной, а не нехватка чего-то на сервере. Серверу нужно одно быстрое ядро для передачи состояния и второе - для сохранений и сети; 1,5-2 vCPU хватает на полную группу. Статья производительность и лаги сервера Valheim объясняет владение зонами и как отличить лаги сервера от лагов клиента, а CPU или RAM: что тормозит ваш сервер - как читать графики.

Диск нужен скромный: около 2 ГБ под сервер плюс мир и его резервные копии. Даже сильно застроенный мир с четырьмя автоматическими копиями легко помещается в 10-15 ГБ, а быстрый накопитель сокращает зависание при сохранении.

Тарифы Valheim на RE:NODE - от 2 ГБ до 8 ГБ, от $6 в месяц, с выделенными обоими UDP-портами и уже включённым crossplay. Переход на тариф выше поднимает лимит памяти на уже существующем сервере, поэтому мир остаётся на месте, когда перерастает тариф.

FAQ#

Хватит ли серверу Valheim 2 ГБ?

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

Нужно ли серверу Valheim больше RAM при большем числе игроков?

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

Почему сервер Valheim зависает каждые полчаса?

Это сохранение мира с интервалом по умолчанию 1800 секунд. На большом мире оно длится достаточно долго, чтобы это заметить. Без самого сохранения не обойтись, но более короткий -saveinterval и быстрый накопитель делают каждое из них коротким, а сервер с запасом памяти сохраняется плавнее, чем упёршийся в лимит.

Увеличивают ли моды потребление RAM на сервере Valheim?

Моды для удобства и администрирования - почти нет. Контентные моды, добавляющие существ и предметы, моды, повышающие частоту спавна или дропа, и особенно моды, увеличивающие мир, - да. Добавьте 1-2 ГБ на типичный список контентных модов и больше - на расширение мира.

Уменьшит ли перезапуск сервера потребление памяти?

Он вернёт процесс к базовому уровню, что на сервере, проработавшем неделю, может освободить несколько сотен мегабайт. Мир от этого меньше не станет, потому что всё загружается обратно из сохранения. Чтобы уменьшить стоимость мира, нужно удалять объекты или терраформинг либо начинать новый мир.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000