Выделенному серверу 7 Days to Die нужно 8 ГБ памяти для Navezgane или случайного мира 6k на четырёх игроков, 10-12 ГБ для мира 8k на шесть-восемь игроков и 12-14 ГБ для мира 10k на восемь и более игроков, разбредшихся по карте. Моды-оверхолы добавляют сверху ещё 2-4 ГБ. Это пиковые цифры, и у пика есть дата: ночь орды, когда все игроки одновременно отбиваются от волны зомби, после недели роста памяти с последнего перезапуска. Две настройки, сильнее всего влияющие на память, - размер генерируемого мира и допустимая дальность обзора, и обе проще выставить правильно до того, как мир появится, чем после.
Что сервер 7 Days to Die держит в памяти#
7 Days to Die - это сервер на Unity, симулирующий воксельный мир, который игроки копают, застраивают и взрывают. Память складывается из четырёх частей.
- Загруженные чанки. Мир хранится чанками, и сервер держит загруженными и активными чанки вокруг каждого игрока. Чем больше игроков и чем дальше они друг от друга, тем больше чанков; группа на одной базе загружает малую долю того, что загрузит та же группа, исследующая мир в четырёх направлениях.
- Сущности. Зомби, животные, игроки, транспорт, выпавшие рюкзаки и мешки с лутом. Каждый зомби - это AI с поиском пути, а поиск пути в разрушаемом воксельном мире дорог по памяти и CPU.
- Статические данные мира. Сгенерированный рельеф, расстановка POI, дорожная сеть, данные префабов для каждого здания, которое может появиться. В большем сгенерированном мире всего этого больше.
- Dynamic mesh. Система, которая позволяет игрокам видеть далёкие POI и постройки игроков вместе с их повреждениями. Она кэширует меши для отслеживаемых областей и управляется параметром
DynamicMeshEnabledи связанными с ним ключами.
Под всем этим находятся среда выполнения Unity и управляемая куча, и, как любой управляемой среде, ей нужно свободное место для сборки мусора. Сервер, живые данные которого заполняют контейнер, не оставляет сборщику места, и именно тогда начинаются подвисания - ещё до того, как что-то закончится.
RAM по размеру мира и числу игроков#
| Мир и группа | RAM | vCPU | Примечания |
|---|---|---|---|
| Navezgane или мир 6k, до 4 игроков | 8 GB | 2 | Минимум для комфортного сервера |
| Случайный мир 8k, 6-8 игроков | 10-12 GB | 2-3 | Типичный размер для сообщества |
| Мир 10k, 8+ игроков, разбрелись | 12-14 GB | 3 | Разброс важнее количества |
| Оверхолы (Darkness Falls и подобные) | плюс 2-4 GB | плюс 0.5-1 | Больше зомби, предметов и блоков |
| Генерация мира при первом запуске | пик выше всех этих значений | - | Разовый всплеск |
7 Days to Die - одна из немногих игр, где 8 ГБ - это минимум, а не комфортная середина. Ниже этого сервер запустится и протянет тихий день, а потом упадёт в первую же ночь орды. В руководстве по настройкам сервера 7 Days to Die используются те же цифры и разобрана вся конфигурация.
Столбец с игроками честно показывает одну вещь, которая удивляет людей: значение ServerMaxPlayerCount по умолчанию - 8, и игра рассчитана на группы такого размера. Серверы побольше существуют и работают, но каждый дополнительный игрок, ушедший сам по себе, загружает ещё одну область чанков и запускает ещё один набор спавна зомби, поэтому после примерно десяти игроков память и CPU растут быстрее, чем линейно.
Настройки, влияющие на память#
Все это свойства в serverconfig.xml. Значения по умолчанию менялись от релиза к релизу, поэтому смотрите значения в своём файле, а не верьте любой таблице, включая эту.
<property name="GameWorld" value="RWG"/><property name="WorldGenSize" value="8192"/><property name="WorldGenSeed" value="tuesday-group"/><property name="ServerMaxPlayerCount" value="8"/><property name="ServerMaxAllowedViewDistance" value="10"/><property name="MaxSpawnedZombies" value="64"/><property name="MaxSpawnedAnimals" value="50"/><property name="BloodMoonEnemyCount" value="8"/><property name="DynamicMeshEnabled" value="true"/><property name="DynamicMeshLandClaimOnly" value="true"/><property name="DynamicMeshMaxItemCache" value="3"/>| Свойство | Типичное значение по умолчанию | Влияние на память |
|---|---|---|
WorldGenSize | 6144 | Размер случайного мира; больше - значит больше статических данных и больше места для исследования |
ServerMaxAllowedViewDistance | 12 | Ограничивает дальность обзора каждого клиента в чанках; меньше - значит меньше загруженных чанков |
MaxSpawnedZombies | 64 | Сколько зомби одновременно живо на всей карте |
MaxSpawnedAnimals | 50 | Сколько животных одновременно живо |
BloodMoonEnemyCount | 8 | Зомби орды на одного игрока одновременно в Кровавую луну |
DynamicMeshEnabled | true | Меши далёких POI и построек; кэширование стоит памяти |
DynamicMeshLandClaimOnly | true | Ограничивает dynamic mesh областями с земельными претензиями |
DynamicMeshMaxItemCache | 3 | Сколько элементов мешей держится в памяти |
Две настройки, с которых стоит начать:
`ServerMaxAllowedViewDistance`. Диапазон - от 6 до 12, и это ограничение того, что может запросить любой клиент. Снижение с 12 до 10 или 8 уменьшает число чанков, которые сервер держит загруженными для каждого игрока, а в мире, полном тумана, деревьев и зданий, большинство игроков почти ничего не замечает. Это самая дешёвая экономия памяти в списке.
`WorldGenSize`. Мир 10k не просто больше: в нём больше городов, больше POI и больше дорог, а первая генерация длится так долго, что люди думают, будто сервер завис. Если ваша группа - четыре человека, мир 6k или 8k даст им с избытком мест для исследования и обойдётся заметно дешевле. Подбирайте мир под группу, а не под самое большое число в выпадающем списке. Размеры RWG, сиды и время генерации подробно описаны в статье генерация мира в 7 Days to Die.
Ночь орды - это нагрузочный тест#
По умолчанию каждый седьмой день Кровавая луна посылает волны зомби на каждого игрока. BloodMoonEnemyCount - сколько их одновременно живо на одного игрока, поэтому восемь игроков при значении по умолчанию означают 64 зомби орды, прокладывающих путь к восьми точкам, часто сквозь построенную игроками оборону, которая рушится и пересчитывается на ходу. Сверху добавляются обычный спавн, загруженные чанки вокруг каждой базы и запись повреждений блоков.
Этот вечер - пик и для памяти, и для CPU, и приходится он на конец недели равномерного роста с последнего перезапуска. Пережить его помогают три привычки:
- Перезапускайте перед ночью орды, а не после. Перезапуск днём седьмого дня возвращает сервер к базовому уровню прямо перед самым тяжёлым часом. Выбор времени и предупреждение игроков описаны в статье расписания перезапусков, которые помогают.
- Сражайтесь в меньшем числе мест. Четыре отдельные базы для орды - это четыре отдельные задачи поиска пути и четыре набора загруженных чанков. Две общие базы - вдвое меньше.
- Не повышайте `BloodMoonEnemyCount` для большой группы. Значение задаётся на игрока. Сервер на двенадцать игроков при значении 8 - это уже 96 зомби одновременно; сложность определяется количеством на базу, а не на игрока.
Настройки орды и их цена подробнее разобраны в статье Кровавая луна и производительность.
Строка лога, которая говорит правду#
Сервер 7 Days to Die примерно раз в минуту пишет в лог строку статуса. Она выглядит так, а точный набор полей немного различается между версиями:
Time: 412.03m FPS: 38.21 Heap: 3215.4MB Max: 4120.7MB Chunks: 612 CGO: 74 Ply: 6 Zom: 41 Ent: 63 (112) Items: 0 CO: 6 RSS: 9874.2MBПоля, которые стоит читать:
- `FPS` - частота симуляции сервера. Это CPU, а не память. Устойчивые значения ниже примерно 20 - порог, за которым игроки замечают телепортирующихся зомби.
- `Heap` и `Max` - используемая управляемая куча и её максимальный размер за всё время. Куча, которая днями ставит новые рекорды, - это рост или утечка.
- `RSS` - резидентная память всего процесса, то самое число, которое на самом деле учитывает лимит контейнера. Сравните его с лимитом своего тарифа. Если
RSSв конце ночи орды находится в пределах примерно 10% от лимита, вы в одном неудачном вечере от остановки. - `Chunks`, `Zom` и `Ent` показывают, что движет цифрами: загруженные чанки, живые зомби, сущности в целом.
Отфильтруйте эти строки в логе через grep, и у вас будет история памяти без каких-либо дополнительных инструментов. Команда mem в консоли администратора выводит похожую сводку по запросу и запускает сборку мусора, что помогает проверить, живые ли это данные или просто мусор, ожидающий сборки. Остальные команды консоли перечислены в статье команды администратора 7 Days to Die.
Генерация мира и папка сохранения#
Случайный мир генерируется при первом запуске с заданными именем, сидом и размером. Генерация строит рельеф, расставляет города и POI, прокладывает дороги и записывает результат в папку сгенерированных миров. Это тяжёлая разовая работа: память во время генерации может превышать то, что нужно готовому миру для работы, а мир 10k может генерироваться долго. На тарифе, которого хватает для работы мира, генерация всё равно может упасть.
Два способа это обойти:
- Генерируйте на тихом сервере, когда никто не подключён и больше ничего не запущено, и сделайте backup сразу после окончания.
- Генерируйте в игровом клиенте на своём компьютере с тем же именем, сидом и размером, а затем загрузите папку сгенерированного мира на сервер. Сервер найдёт её и пропустит генерацию.
После этого сохранение растёт по мере игры. Каждый регион мира - это файл .7rg в папке Region сохранения, и регионы, которые копали, застраивали или повреждали, несут эти данные. Файлы регионов хорошо исхоженного мира 10k могут достигать нескольких гигабайт - это диск, а не память, но их загрузка и сохранение входят в то, что сервер делает каждый раз, когда игрок переходит в новую область.
Моды: модлеты и оверхолы#
Моды для 7 Days to Die бывают от модлетов из одного файла, меняющих один рецепт, до полных оверхолов, заменяющих большую часть контента игры.
- Модлеты, правящие XML - рецепты, лут, размер стаков, - почти ничего не стоят по памяти.
- Контентные модлеты, добавляющие блоки, предметы или типы зомби, добавляют свои ассеты и свой спавн.
- Оверхолы вроде Darkness Falls добавляют новые классы зомби, множество новых блоков и предметов, новые POI и изменённый спавн. По сути это другая игра с другими требованиями: добавьте 2-4 ГБ и половину ядра и ожидайте более медленного запуска.
Оверхолы выходят вслед за крупными версиями базовой игры с задержкой, поэтому проверьте, что устанавливаемая версия точно совпадает с версией игры на сервере; несовпадение обычно останавливает сервер при загрузке, а не расходует лишнюю память. Установка и синхронизация клиентов описаны в статье оверхолы на сервере.
Разбор на примере: шесть игроков в мире 8k#
Группа из шести хочет случайный мир 8k, количество зомби по умолчанию, один пак модлетов для удобства и Кровавую луну каждые семь дней. Таблица говорит: 10-12 ГБ. Вот как проверить это на реальных данных, а не верить таблице.
- Сначала генерация, потом расчёт. Сгенерируйте мир на тихом сервере или в клиенте и загрузите его, чтобы тариф не определялся всплеском при генерации.
- Запишите базовый уровень. Запустите сервер без игроков и через пять минут прочитайте
RSSиз строки статуса. На мире 8k это движок, статические данные мира и модлеты. - Посмотрите обычный вечер. Когда все шестеро онлайн и разбрелись по карте, следите за
RSS,ChunksиZomв самый загруженный час. Разброс проявляется высоким значениемChunks. - Посмотрите ночь орды. Те же поля в разгар Кровавой луны на седьмой день, без перезапуска перед ней, дают настоящий пик недели.
- Решите. Если этот пик ниже примерно 85% тарифа, всё помещается. Если близко, самые дешёвые решения - перезапуск перед ночью орды и
ServerMaxAllowedViewDistance, сниженный на два. Если и этого не хватает, переходите на тариф выше.
Большинство групп такого состава спокойно укладываются в 10 ГБ с перезапуском перед ордой и в 12 ГБ без него. Разница между этими тарифами часто - одна задача в расписании.
Что происходит при достижении лимита#
Когда серверу 7 Days to Die внутри контейнера не хватает памяти, он не пишет в лог понятной ошибки. Процесс останавливается, лог обрывается посреди строки, и у вас остаётся то, что успело записаться в файлы регионов последним. Файлы регионов, пойманные посреди записи, - один из способов повредить сохранение 7 Days, поэтому привычка делать резервные копии в этой игре важнее, чем в большинстве других.
На RE:NODE сервер, достигший лимита памяти, останавливается и чисто перезапускается, а не уходит в swap; сервер 7 Days в swap всё равно непригоден для игры. Слоты backup входят в каждый тариф, а вкладка Schedules может запускать backup перед перезапуском накануне ночи орды. Тарифы 7 Days to Die начинаются с 8 ГБ от $20 в месяц и доходят до 14 ГБ, а логин Steam, нужный для установки, вводится на вкладке Setup. Переход на тариф выше поднимает лимит на уже существующем сервере, поэтому мир остаётся на месте.
FAQ#
Хватит ли серверу 7 Days to Die 8 ГБ?
Для Navezgane или случайного мира 6k на четырёх игроков - да. Для мира 8k на шесть-восемь игроков сервер работать будет, но в ночь орды в конце недели без перезапуска будет тесно. Ниже 8 ГБ запускать сервер не стоит.
Почему сервер 7 Days лагает в ночь орды?
Потому что ночь орды - пик и для памяти, и для CPU: десятки зомби одновременно прокладывают путь сквозь разрушаемые блоки к нескольким базам. Посмотрите на поле FPS в логе. Если оно проваливается, а RSS заметно ниже лимита, дело в CPU, и меньшее число баз для орды поможет больше, чем память. Если RSS близок к лимиту, перезапускайте перед следующей ордой.
Нужно ли большему миру больше RAM?
Да, сильнее, чем в большинстве игр. Больший случайный мир несёт больше статических данных и больше POI, а игроки разбредаются по нему дальше и загружают больше чанков. Мир 10k на четырёх игроков - это оплата карты, которую они никогда не посетят.
Сколько RAM нужно для Darkness Falls?
Закладывайте на 2-4 ГБ больше, чем нужно тому же миру в ванили, и ещё половину ядра. Оверхолы добавляют типы зомби, блоки и предметы и меняют спавн, поэтому поднимают и базовый уровень, и пик в ночь орды.
Помогает ли перезапуск с памятью в 7 Days to Die?
Да. Память растёт за дни аптайма, а перезапуск возвращает сервер к базовому уровню. Ставьте его перед ночью орды, а не после, чтобы самый тяжёлый час недели начинался с самой низкой точки.




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