RE:NODE

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

Требования игровых серверов: RAM, CPU и диск по играм

Одна таблица разумных значений RAM, vCPU, диска и портов для каждой игры в каталоге, а затем объяснение, почему каждому жанру нужно именно столько.

0 прочтений

Большинство советов по выбору мощности для игровых серверов - это одно число без всякого контекста, и поэтому так много людей покупает 16 ГБ для игры, которая упирается в одно ядро процессора, и 1 ГБ для игры, которая через месяц после запуска съедает всю память. Таблица ниже - честная версия: отправная точка по RAM, vCPU, диску и портам для каждой игры из каталога RE:NODE, а следом - объяснение, почему каждому жанру нужно именно то, что нужно, чтобы вы могли двигаться от этого числа вверх или вниз, а не гадать. Если прочитать всего одну строку, пусть будет эта: продаётся память, чаще всего заканчивается одно быстрое ядро, а диск - это ресурс, который тихо отказывает во время обновления в три часа ночи.

Как читать эти числа#

Четыре столбца - четыре разных по природе утверждения, и надёжны они не в равной мере.

RAM - это жёсткий потолок, а не цель. Контейнер с 4 ГБ останавливается на 4 ГБ. Поэтому число в таблице - это объём, с которого стоит начинать серверу этой игры для обычной компании игроков на мире возрастом в несколько недель, с небольшим запасом сверх того, что процесс реально использует. У большинства игр на графике памяти в панели будет занято 60-75%, и это правильно. Сервер, сидящий на 97% лимита, - это один оживлённый вечер до перезапуска ядром.

vCPU сбивает с толку, потому что это доля, а не количество. На хостинге, построенном на Pterodactyl, включая RE:NODE, число CPU - это процент от одного ядра, так что 150 означает 1,5 vCPU, и это жёсткое ограничение, а не обещание полутора физических ядер. Оно даёт две вещи: запас на главном потоке, когда начинается бой, и место для вторичных потоков - сохранения, сети, генерации чанков, сборки мусора - чтобы они работали, не отнимая ресурс у симуляции. Почти ни один игровой сервер не использует больше одного ядра для того, что вас интересует, поэтому 2 vCPU - это не «вдвое быстрее, чем 1», а «одно занятое ядро и место для всего остального».

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

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

Требования для каждой игры, которую мы хостим#

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

ИграRAMvCPUДискПорты
7 Days to Die8 GB255 GB2 TCP+UDP
Abiotic Factor6 GB1.535 GB2 UDP
Arma 36 GB255 GB5 UDP
Assetto Corsa3 GB1.530 GB2 TCP+UDP
BeamMP3 GB1.515 GB1 TCP+UDP
Counter-Strike 1.61 GB0.7510 GB1 UDP
Counter-Strike 22 GB1.540-60 GB2 UDP
DayZ6 GB235 GB3 UDP
Don't Starve Together2 GB115 GB2 UDP
Euro Truck Simulator 22 GB115 GB2 UDP
Factorio2 GB1.510 GB1 UDP
FiveM4 GB1.530 GB2 TCP+UDP
Garry's Mod2 GB115 GB1 UDP
Insurgency: Sandstorm3 GB220 GB2 UDP
Killing Floor 24 GB1.540 GB3 UDP+TCP
Minecraft (Paper)4 GB1.530 GB1 TCP
Palworld8 GB240 GB2 UDP
Project Zomboid4 GB225 GB3 UDP+TCP
RimWorld2 GB115 GB1 TCP
SCP: Secret Laboratory5 GB1.520 GB2 UDP
Satisfactory8 GB2.540 GB2 TCP+UDP
Skyrim Together2 GB115 GB1 UDP
Sons of the Forest8 GB250 GB3 UDP+TCP
Team Fortress 23 GB1.535 GB3 UDP
Terraria1 GB0.7510 GB1 TCP
The Forest4 GB1.7525 GB3 UDP
The Front8 GB2.540 GB3 UDP
The Isle8 GB2.535 GB3 UDP+TCP
Unturned3 GB1.515 GB2 UDP
Valheim3 GB1.520 GB2 UDP

Прежде чем перейти к объяснениям, в этой таблице стоит заметить две вещи.

Первая - разброс. Counter-Strike 1.6 хватает гигабайта и доли ядра; Palworld, Satisfactory и The Front нужны восемь гигабайт и два с половиной ядра. Это восьмикратная разница по памяти между играми, которые обе называют себя многопользовательскими серверами для горстки друзей, и объясняется она целиком тем, какой объём мира серверу приходится держать в памяти одновременно.

Вторая - столбцы RAM и vCPU не растут вместе. Counter-Strike 2 и Insurgency: Sandstorm находятся почти внизу по памяти и почти наверху по процессору относительно своей памяти. У The Forest и Abiotic Factor всё наоборот. Более крупный тариф повышает оба показателя, и это нормально, но нужный вам тариф определяется тем из двух, что закончится первым, - а отличить их друг от друга можно за полминуты, как описано в статье CPU или RAM: что тормозит ваш сервер.

Выживание и строительство баз: ограничивает память#

7 Days to Die, Palworld, Project Zomboid, DayZ, Abiotic Factor, The Forest, Sons of the Forest, The Front, The Isle, Satisfactory и Valheim ведут себя внутри одинаково, что бы ни говорили их жанровые ярлыки. Сервер держит мир, который генерируется по мере того, как люди его исследуют, и продолжает его держать. Расход памяти в первый день - это не расход памяти на шестой неделе, и ничто в конфигурации не меняет эту траекторию всерьёз.

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

Отсюда три практических правила:

  • Рассчитывайте на карту, а не на число игроков. Четверо игроков, каждый из которых построил базу на расстоянии 3000 метров от других, обходятся куда дороже, чем восемь игроков в одном городе. Это главная причина, по которой серверы, у которых «в прошлом месяце всё было нормально», перестают быть нормальными.
  • Ждите роста и планируйте перезапуск. Еженедельный перезапуск по расписанию не лечит утечку памяти, но возвращает сервер к его минимуму, а не к потолку, и в большинстве этих игр разница составляет гигабайт и больше.
  • Вайпы и чистка - это инструмент для памяти. Сброс регионов в 7 Days to Die, очистки вроде EraseAllModData в Project Zomboid и настройки лутовой экономики DayZ существуют отчасти потому, что альтернатива - файл мира, растущий без предела.

Palworld - крайний случай, и ему посвящена отдельная статья память сервера Palworld: сервер держит всех паллов в каждой базе каждого игрока, в сети он или нет, и значение имеет общее число баз на карте, а не число подключённых людей. Главная статья расходов Valheim - терраформинг, который хранится для каждого изменённого участка земли и никуда не исчезает. The Isle и The Front - это большие карты на Unreal, где один только минимум занимает несколько гигабайт ещё до того, как зашёл первый игрок.

Шутеры и арены: одно быстрое ядро#

Counter-Strike 2, Counter-Strike 1.6, Team Fortress 2, Insurgency: Sandstorm, Killing Floor 2 и SCP: Secret Laboratory - это обратная проблема. Карта фиксированная, небольшая и загружается один раз, поэтому память почти постоянна от первой секунды до последней. Меняется то, сколько работы сервер делает за тик, а их 64 или 128 в секунду.

У тика есть жёсткий бюджет: при 64 тиках у сервера 15,6 мс, чтобы просчитать движение, выполнить регистрацию попаданий, отработать каждый плагин и собрать снимок состояния для каждого подключённого клиента. Если выйти за него, тик опаздывает, и игроки ощущают это как «резиновое» движение и нестабильную регистрацию попаданий, а не как «лаг». Вся эта работа идёт в одном потоке, поэтому помогает только более быстрое ядро или меньший объём работы за тик. Добавление памяти шутеру, который подтормаживает, не меняет ничего. Как читать это число в каждом движке, описано в статье что на самом деле означает tick rate.

На что уходит память из таблицы в этих играх:

  • Counter-Strike 1.6 - это двадцатилетний бинарник GoldSrc. Гигабайт с запасом, и он никогда его не использует. Он в списке потому, что тариф должен существовать, а не потому, что игра требовательна.
  • Counter-Strike 2 и Team Fortress 2 занимают 1-2 ГБ на полном сервере, а остальное - запас на смену карт, запись демо и плагины. Metamod и CounterStrikeSharp или SourceMod добавляют немного памяти и заметную долю нагрузки на CPU за тик, и именно за ней стоит следить.
  • SCP: Secret Laboratory требует больше, чем подсказывает число игроков, потому что раунд - это целый комплекс, симулируемый одновременно, и потому что стандартные фреймворки плагинов тащат за собой среду выполнения .NET.
  • Killing Floor 2 - это Unreal 3 с большой установкой, и в её раундах на шесть игроков появляется много ИИ. Нагрузка на CPU приходится на поиск пути у зедов, а не на игроков.

Если вы запускаете любую из этих игр с плагинами, считайте, что плагины - это и есть ваш бюджет CPU. Стандартный сервер Source с 24 игроками почти простаивает. Тот же сервер с сорока плагинами SourceMod, системой рангов на базе данных с синхронными запросами и голосованием за карту в каждом раунде - совсем другая машина.

Песочницы, скриптовые и симуляционные миры#

Остальные игры - неудобная середина, и у них есть одна общая черта: их требования определяются тем, что вы добавляете, а не тем, что поставляется в комплекте.

Minecraft упирается и в память, и в процессор, в пропорции, которую вы выбираете сами. Параметры view-distance и simulation-distance в server.properties напрямую превращают одно в другое: каждый игрок держит загруженным квадрат из 2 x view-distance + 1 чанков по стороне, так что снижение с 10 до 6 убирает около 62% чанков, которые держит каждый игрок. 4 ГБ хватает для комфортного сервера Paper на двадцать игроков со стандартными настройками; тяжёлому модпаку нужно 8 ГБ и больше и совершенно другая конфигурация Java. Подробности - в статьях сколько RAM нужно серверу Minecraft и руководство по оптимизации Paper.

FiveM - это платформа для скриптов с приложенной игрой. Сам серверный бинарник скромен, а вот устанавливаемые ресурсы - нет. Стандартный сервер с горсткой ресурсов доволен 2 ГБ, а полноценный roleplay-фреймворк с двумястами ресурсов, базой данных за ним и включённым OneSync - это машина на 6-8 ГБ с настоящим аппетитом к CPU. Список ресурсов и есть ваш документ с требованиями.

Garry's Mod - та же история, только на Lua. Ванильный сервер-песочница крошечный. DarkRP с шестьюдесятью аддонами и коллекцией из мастерской - нет, и каждый аддон работает в том же главном потоке, что и игра.

Factorio - самый чистый случай упора в процессор в этом списке. Сервер выполняет симуляцию в жёстком такте, 60 обновлений в секунду, и большая фабрика может не выдерживать эту цель даже на быстром ядре, используя меньше гигабайта памяти. Если UPS падает, ответ не в увеличении RAM, а в сокращении числа сущностей.

Terraria, Don't Starve Together, RimWorld, Skyrim Together, Euro Truck Simulator 2, Assetto Corsa и BeamMP - по современным меркам небольшие серверы, и для всех них причина переходить на следующую ступень - моды, а не игроки. Don't Starve Together выделяется тем, что кластер с пещерами - это два серверных процесса, делящих одно выделение, так что закладывайте ресурсы на оба. Стоимость BeamMP - физика, а физика считается на машину, а не на игрока.

Диск и обновление, которое его заполняет#

На диске люди попадаются, и это самый неинтересный ресурс ровно до тех пор, пока он не становится единственным, который имеет значение.

На диске игрового сервера лежат четыре вещи, и только первую обычно имеют в виду:

  1. Установленная игра, которая для игр на SteamCMD представляет собой загрузку, разраставшуюся с каждым обновлением после релиза.
  2. Мир, сохранения и их ротируемые резервные копии, которые в играх на выживание сами по себе могут достигать нескольких гигабайт.
  3. Моды, контент из мастерской, карты и скачанные ресурсы. В Arma 3, DayZ, Garry's Mod и Killing Floor 2 они регулярно превышают базовую установку.
  4. Свободное место под следующее обновление.

Именно четвёртый пункт ломает серверы. SteamCMD скачивает в тот же том, который обновляет, поэтому для обновления сверх существующей установки нужно свободное место примерно по размеру изменившихся файлов, прежде чем их можно будет подменить. Диск ровно по размеру игры - это диск, на котором следующее обновление провалится, обычно с вводящей в заблуждение ошибкой о пропавшем манифесте приложения. Оставьте свободными 20-30%, и проблема не возникнет. В статье SteamCMD простыми словами рассказано про validate, беты и то, что остаётся после неудачного обновления.

Ещё два факта о диске, которые стоит знать:

  • Логи растут. Загруженный сервер Source с подробным логированием или сервер Minecraft с болтливым плагином пишет сотни мегабайт в неделю. Ротируйте их или удаляйте по расписанию. Какие из них стоит хранить, описано в статье логи, которые стоит хранить.
  • Резервные копии рядом с миром - это не резервные копии. Каждая игра со встроенной ротацией бэкапов пишет в тот же каталог на том же диске. Они защищают от повреждённого сохранения, но не от удалённого сервера. И они входят в ваш объём диска.

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

Порты и протоколы#

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

ИграИгровой портДругие порты
Minecraft25565 TCP25575 TCP для RCON, если включён
Terraria7777 TCPнет
Valheim2456 UDP2457 UDP query
Counter-Strike 2, TF2, Garry's Mod27015 UDP27020 UDP SourceTV, 27015 TCP RCON
Counter-Strike 1.627015 UDPнет
Palworld8211 UDP27015 UDP query, 25575 TCP RCON
Project Zomboid16261 UDP16262 UDP, 27015 TCP RCON
7 Days to Die26900 TCP и UDP26901-26902 UDP, 8081 telnet
Factorio34197 UDPнет
Arma 32302 UDP2303-2306 UDP
DayZ2302 UDP27016 UDP query
Unturned27015 UDP27016-27017 UDP
Insurgency: Sandstorm27102 UDP27131 UDP query, 27015 TCP RCON
Killing Floor 27777 UDP27015 UDP query, 8080 TCP WebAdmin
Don't Starve Together10999 UDP10998 UDP для шарда с пещерами
FiveM30120 TCP и UDP40120 TCP для txAdmin
BeamMP30814 TCP и UDPнет
SCP: Secret Laboratory7777 UDPquery на том же порту

Закономерность почти для всех: сама игра говорит по UDP, протокол query обычно тоже по UDP, но на другом номере, а всё административное - RCON, telnet, веб-панель - по TCP. Правило файрвола, открывающее только TCP, - самая частая причина того, что сервер работает, но его нельзя найти, а почему вообще существует такое разделение, объясняет статья TCP и UDP для игровых серверов.

Где такая таблица ошибается#

Четырьмя способами, и честно стоит рассказать обо всех.

Моды обесценивают всё. Каждое число выше - для чистого сервера. Модпак Minecraft, список модов Arma 3, папка ресурсов FiveM или коллекция мастерской Project Zomboid могут удвоить или утроить и память, и нагрузку на CPU, и ни одна таблица в мире не предскажет, во сколько именно. Работает только один метод: установить то, что собираетесь запускать, дать ему нагрузку с настоящими игроками в течение вечера и прочитать графики.

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

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

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

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

FAQ#

Всегда ли больше RAM лучше для игрового сервера?

Нет. Память сверх того, что использует процесс, не даёт ничего, а на играх с JVM, таких как Minecraft, слишком большая куча даже вредит, удлиняя паузы сборки мусора. Покупайте столько памяти, сколько нужно серверу, плюс запас на самый загруженный час, а остальной бюджет тратьте на CPU, если что-то всё ещё подтормаживает.

Что на самом деле означает 1,5 vCPU?

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

Сколько диска оставлять свободным?

Примерно 20-30% от выделенного объёма. Большая часть уходит на обновления, которые скачиваются рядом с существующей установкой, прежде чем заменить её, а остальное - на логи и ротацию бэкапов. Сервер, работающий при 95% занятого диска, провалит следующее обновление с ошибкой, в которой ничего не сказано о месте на диске.

Почему серверу для одной игры нужно два или три порта?

Один для игрового трафика, один для протокола query, который читают серверные браузеры и сайты-трекеры, а иногда третий - для RCON, веб-интерфейса администратора или второго шарда мира. Игра работает и с одним открытым первым портом; просто её не видит никто из тех, кто ищет её в списке.

Мой сервер работал нормально, а теперь нет. Что изменилось?

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

Можно ли начать с малого и перейти на больший тариф позже?

Да, и это правильный подход для всего, кроме запуска, который вы уже разрекламировали. Начните на ступень ниже той, что считаете нужной, понаблюдайте за графиками две недели и переходите выше, если так покажут цифры. В RE:NODE смена тарифа повышает лимиты уже существующего сервера, а не пересобирает его, так что мир, конфиг и адрес остаются на месте.


Комментарии

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

0/2000