RE:NODE

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

RAM для сервера DayZ: игроки, моды, экономика

Память сервера DayZ по слотам и списку модов, как на неё влияют центральная экономика и персистентность, логирование в serverDZ.cfg, которое это доказывает, и почему перезапуски - норма.

0 прочтений

Серверу DayZ нужно 4-6 ГБ памяти для приватной группы из десяти-двадцати человек на ванили, 6-8 ГБ для типичного публичного сервера на 30-40 слотов, 8-10 ГБ для загруженного ванильного сервера на 40-60 слотов и 10-12 ГБ для сервера с большим количеством модов масштаба Expansion, торговцами и AI. Память растёт вместе со списком модов и с тем, что сохраняется на карте, гораздо сильнее, чем с числом игроков: сервер на 30 слотов с большим паком модов потребляет больше, чем ванильный на 60. Ресурс, который на DayZ обычно заканчивается первым, - вовсе не память, а FPS сервера, то есть одно загруженное ядро, поэтому сначала докажите, чего именно вам не хватает, а потом покупайте больше того или другого.

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

Сервер DayZ симулирует карту площадью 225 квадратных километров (Чернарусь; Ливония меньше) с постоянной экономикой. Его память состоит из четырёх крупных частей.

  • Карта и базовый уровень движка. Рельеф, здания, навигационные данные для заражённых и животных и сам движок. Это оплачивается до того, как кто-то зайдёт, и зависит от карты.
  • Центральная экономика. Каждый предмет на карте - объект. Задача экономики - держать количество каждого типа предметов около целевого, поэтому сервер с ванильным types.xml в любой момент держит десятки тысяч предметов - в зданиях, на заражённых, на земле, в инвентарях игроков.
  • Постоянные объекты. Палатки, бочки, ящики, стены и ворота баз, закопанные тайники и транспорт переживают перезапуски благодаря системе персистентности. Всё, что внутри них, тоже сохраняется. Именно эта часть растёт за время жизни сервера.
  • Моды. Скрипты, конфиги и ассеты каждого мода, загруженные в сервер, и каждый предмет, который они добавляют в экономику.

Сами игроки стоят сравнительно немного: их персонаж, инвентарь и сетевое состояние. Косвенно они стоят всего, что строят, копят и бросают.

RAM по слотам и списку модов#

СерверRAMvCPUПримечания
10-20 слотов, ваниль4-6 GB2Комфортно для приватной группы
30-40 слотов, ваниль6-8 GB2-3Типичный публичный сервер
40-60 слотов, ваниль8-10 GB3+Пределом становится FPS сервера, а не память
30-50 слотов, много модов10-12 GB3+Списки масштаба Expansion, торговцы, AI
Карта сообщества (Namalsk, Deer Isle и подобные)плюс 1-2 GB-Зависит от размера и плотности карты

Как это читать:

  • Моды двигают вас вниз по таблице быстрее, чем слоты. Сервер с Expansion, его рынком, транспортом и модулями AI плюс строительством баз и паками оружия - это совсем другая машина, чем ванильный сервер с тем же числом слотов.
  • Возраст тоже двигает вниз. Сервер, который никогда не вайпает постоянное хранилище, накапливает базы и тайники вместе с их содержимым. Сервер на третьем месяце вайпа потребляет заметно больше, чем на первой неделе.
  • Столбец CPU важен не меньше столбца RAM. Симуляция DayZ работает в главном потоке. Сервер на 60 слотов упирается в FPS сервера задолго до того, как закончится память.

В руководстве по серверу DayZ и модам используются те же цифры и от начала до конца описана установка.

Центральная экономика - это настройка памяти#

Лутом в DayZ управляют файлы центральной экономики в папке миссии - mpmissions/dayzOffline.chernarusplus/ для ванильной Черноруси. Два из них задают числа, важные для памяти.

types.xml

У каждого типа предметов есть целевое количество (nominal), минимум (min), lifetime в секундах до исчезновения нетронутого предмета и время пополнения restock:

types.xml
<type name="AKM">    <nominal>8</nominal>    <lifetime>14400</lifetime>    <restock>0</restock>    <min>4</min>    <quantmin>-1</quantmin>    <quantmax>-1</quantmax>    <cost>100</cost></type>

Сумма nominal по всем типам - это примерно то, сколько предметов экономика старается держать в мире. Удвоение лута через умножение nominal - очень частое изменение на серверах сообществ - примерно удваивает эту часть памяти и добавляет экономике работы для CPU. Длинные значения lifetime означают, что выброшенные и брошенные предметы остаются дольше. Моды, добавляющие оружие и снаряжение, добавляют свои записи, и некоторые паки модов поставляются с щедрыми nominal. Каждое поле разобрано в статье types.xml и экономика лута.

globals.xml

Глобальные ограничения и таймеры очистки находятся в db/globals.xml. Вот те, что важны для памяти:

ПеременнаяТипичное значение по умолчаниюЭффект
ZombieMaxCount1000Сколько заражённых одновременно живо на карте
AnimalMaxCount200Сколько животных одновременно живо
CleanupLifetimeDeadPlayer3600Сколько секунд лежит тело игрока
CleanupLifetimeDeadInfected330Сколько секунд лежит тело заражённого
CleanupLifetimeDeadAnimal1200Сколько секунд лежит туша животного
CleanupLifetimeRuined330Сколько секунд лежит испорченный предмет

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

Персистентность: часть, которая растёт#

Постоянное хранилище находится в каталоге storage_1 папки миссии (число - это instanceId из serverDZ.cfg). Каждая палатка, бочка, стена, ворота, закопанный тайник и машина записываются туда и загружаются при каждом запуске вместе с содержимым.

Это даёт DayZ такой же медленный рост, как у любой игры на выживание со строительством баз:

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

Полный вайп персистентности сбрасывает всё это и обычно делается вместе с обновлением карты или по фиксированному графику. Что может удалить частичный вайп и что удаляет полный, описано в статье вайпы сервера DayZ и персистентность.

Доказательство по собственным логам сервера#

DayZ умеет писать собственную память и FPS в файл .RPT сервера - это самый простой способ получить реальные цифры за целую сессию. Добавьте в serverDZ.cfg:

serverDZ.cfg
logAverageFps = 60;logMemory = 60;logPlayers = 60;

Каждое значение - интервал в секундах. С этими настройками в RPT-логе периодически появляются строки со средним FPS сервера, используемой памятью и числом игроков. Оставьте это работать на весь цикл перезапуска в загруженный вечер, и у вас будут ровно те данные, которые нужны для решения о ресурсах.

На что смотреть:

  1. Память на протяжении цикла. Она растёт с запуска по мере заполнения экономики и расхождения игроков по карте. Если перед следующим перезапуском по расписанию она в пределах примерно 10% от лимита, вам не хватает.
  2. FPS сервера под нагрузкой. Если по мере заполнения сервера FPS проседает к однозначным числам, а память ещё с запасом, предел - CPU. Больше памяти не поможет; помогут меньше заражённых, меньше лута, меньше AI и меньше тяжёлых модов.
  3. Связь между ними. Сервер, у которого FPS равномерно падает в течение сессии вместе с ростом памяти, - классический случай для более короткого интервала перезапуска, а не для тарифа побольше.

Общий метод описан в статье CPU или RAM: что тормозит ваш сервер, а что делать, когда упор в ядро, - в статье требования игрового сервера к CPU.

Параметры запуска, затрагивающие память и CPU#

В строке запуска сервера DayZ есть несколько параметров, которые стоит знать при расчёте ресурсов:

bash
$ ./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles \    -cpuCount=2 -limitFPS=60 -dologs -adminlog -freezecheck \    "-mod=@CF;@Dabs Framework;@DayZ-Expansion-Core"

Что делает каждый из важных:

  • `-cpuCount` сообщает движку, под сколько ядер планировать рабочие потоки. Задайте его по числу ядер, которые у вас действительно есть; значение выше выделенного объёма лишь создаёт потоки, которые конкурируют друг с другом.
  • `-limitFPS` ограничивает частоту кадров симуляции сервера. Ограничение не даёт серверу жечь CPU на кадры, от которых никому нет пользы, и оставляет запас для моментов, когда он нужен.
  • `-mod` и `-serverMod` перечисляют моды, загружаемые с обеих сторон и только на сервере. Каждая запись - это память при запуске; серверные моды (инструменты администратора, логирование, помощники античита) не исключение.
  • `-freezecheck` заставляет сервер остановиться самому, если он завис, - это лучше, чем замёрзший процесс, удерживающий игроков минутами.

На хостинге с панелью это переменные на вкладке Startup, а не строка, которую вы вводите, и список модов обычно вынесен в отдельное поле.

Моды: самая большая переменная#

Сообщество моддеров DayZ большое, а его крупные фреймворки весомы. Цена зависит от того, что делает мод:

  • Фреймворки и моды администрирования - Community Framework, инструменты администратора, логирование - добавляют умеренно памяти и часто являются зависимостями всего остального.
  • Контентные паки - оружие, одежда, транспорт - добавляют ассеты и записи экономики. Каждый новый тип предметов, который спавнится, - это больше объектов на карте.
  • Системные моды - рынок, AI, квесты, территории и транспорт Expansion; моды торговцев; переработки строительства баз - добавляют больше всего, потому что добавляют работающие системы и постоянное состояние, а не только предметы.

Expansion модульный, поэтому сервер может запускать его ядро и модули строительства баз без AI и рынка, и разница в памяти и CPU существенная. Устанавливайте те модули, которыми действительно будете пользоваться. Модули и порядок их настройки описаны в руководстве по серверу с модом DayZ Expansion.

Разбор на примере: 40 слотов с Expansion#

Сообщество хочет сервер на Черноруси на 40 слотов с модулями ядра, строительства баз, транспорта и рынка Expansion, паком оружия, паком одежды и горсткой модов администрирования и удобства. Лут ванильный, оружия - в полтора раза больше. Вот как рассчитать это без угадывания.

  1. Начните с таблицы. Сорок слотов на ванили - это 6-8 ГБ. Системы Expansion и два контентных пака переводят сервер в строку с модами, 10-12 ГБ. Начните с 10 ГБ, ожидая, что придётся перейти выше.
  2. Измерьте базовый уровень. Запустите сервер с полным списком модов, без игроков и с включённым logMemory. Дождитесь, пока экономика закончит спавнить лут - после запуска это занимает время, - и запишите цифру. Это базовый уровень для этого списка модов и настройки лута.
  3. Измерьте целый вечер. Дайте серверу отработать весь цикл перезапуска в пиковое время с тридцатью с лишним игроками. Запишите память в конце цикла, прямо перед перезапуском по расписанию, и самый низкий FPS сервера.
  4. Решите. Если цифра в конце цикла ниже примерно 85% тарифа, а FPS в норме, тариф подходит. Если память близка к лимиту, либо перейдите на тариф выше, либо сократите интервал перезапуска с четырёх часов до трёх. Если FPS проседает при нормальной памяти, ответ - меньше AI, меньше заражённых или более лёгкий рынок, а не больше памяти.
  5. Повторите через первый месяц. Персистентность вырастет с каждой базой, поэтому для долгой перспективы важна цифра в конце цикла на пятой неделе.

На практике такой сервер на втором месяце обычно устанавливается на 9-11 ГБ в конце цикла, поэтому 12 ГБ - комфортный тариф, а 10 ГБ - впритык. Цифры на вашем сервере будут другими; метод - тот же.

Перезапуски - часть замысла#

Серверы DayZ перезапускаются по расписанию, обычно каждые три-четыре часа. Это не признание поражения: FPS сервера за долгую сессию деградирует, память растёт по мере того, как экономика и игроки расходятся по карте, а перезапуск чисто записывает персистентность и возвращает сервер к базовому уровню. При перезапуске же перераспределяются лут и заражённые, и игроки к этому привыкли.

Файл миссии db/messages.xml может объявлять перезапуски и останавливать сервер при заданном аптайме, а расписание в панели может запускать перезапуск и backup по cron-выражению. Выбор интервала описан в статье расписания перезапусков, которые помогают. На RE:NODE кнопка Restart - это корректная остановка, поэтому персистентность записывается до завершения процесса; сервер, достигший лимита памяти, останавливается и чисто перезапускается, а не уходит в swap. Для ноды это безопасно, а для игроков резко - ещё одна причина держать запас под лимитом, а не работать на грани.

Тарифы DayZ на RE:NODE начинаются с 6 ГБ с тремя выделенными портами, от $19 в месяц, и доходят до 12 ГБ на вершине линейки - как раз под ванильный сервер на 40 слотов внизу и большой сервер с Expansion наверху. Для установки нужен логин Steam с купленной игрой, который вводится на вкладке Setup; разумно использовать запасной аккаунт.

FAQ#

Хватит ли серверу DayZ 6 ГБ?

Для ванильного сервера на 30-40 слотов или слегка модифицированного - да. Для сервера с большим количеством модов, системами Expansion, торговцами и AI закладывайте 10-12 ГБ. Прежде чем решать, включите logMemory в serverDZ.cfg и прочитайте полный цикл.

Растёт ли потребление RAM в DayZ с числом игроков?

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

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

FPS сервера за долгую сессию деградирует по мере накопления объектов, тел и активности игроков, а память растёт вместе с ним. Именно поэтому серверы DayZ перезапускаются каждые несколько часов. Если становится плохо в течение часа после перезапуска, смотрите на множители лута, число заражённых и тяжёлые моды.

Увеличит ли удвоение лута потребление памяти?

Да. Центральная экономика держит количество предметов около целевых nominal, поэтому удвоение nominal примерно удваивает число объектов лута на карте. Это ещё и добавляет работы экономике и персистентности. Повышайте типы предметов, которые нужны игрокам, а не всё подряд.

Сколько RAM нужно DayZ Expansion?

Закладывайте 10-12 ГБ для сервера с большинством модулей Expansion и 30-50 игроками. Больше всего добавляют модули AI, рынка и транспорта. Если запускать только используемые модули и держать в разумных пределах запасы торговцев и количество AI, потребление будет ближе к нижней границе.


Комментарии

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

0/2000