RE:NODE

Сеть11 мин чтения

Трафик игрового сервера на одного игрока

Сколько исходящего трафика стоит каждый игрок в Minecraft, играх на Source, Valheim, Arma 3, Factorio и других, какие настройки на это влияют и как рассчитать и измерить трафик сервера.

0 прочтений

Игрок на игровом сервере стоит от примерно 5 до 250 КБ/с исходящего канала сервера, в зависимости от игры: несколько килобайт в секунду в Minecraft или Terraria, 30-60 КБ/с в шутере на Source с 64 тиками, 50-150 КБ/с в Valheim и до 250 КБ/с в нагруженной миссии Arma 3. То, что каждый игрок отправляет обратно, гораздо меньше - обычно несколько килобайт в секунду. Стабильный трафик проблемой бывает редко; проблема - всплески: игрок подключается и скачивает мир, меняется карта, модифицированный сервер раздаёт ассеты. В этой статье - цифры по играм, настройки, которые их сдвигают, и способ измерить, что на самом деле отправляет ваш сервер.

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

Трафик на игрока по играм#

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

ИграНа игрока, от сервера к клиентуЧем определяется
Minecraft Java5-20 KB/sДальность прорисовки, число сущностей, скорость передвижения игроков
Terraria5-15 KB/sСнаряды и NPC на экране
Factorio10-30 KB/sДействия игроков, а не размер завода
Project Zomboid20-60 KB/sЧисло зомби рядом с игроком
Игры на Source с 64 тиками (CS2, TF2, Garry's Mod)30-60 KB/sTick rate, число игроков, клиентский rate
Песочницы на выживание (7 Days to Die, DayZ)30-150 KB/sСущности и игроки в поле зрения
Valheim50-150 KB/sПостройки и существа в соседних зонах
Arma 350-250 KB/sЮниты ИИ, техника, лимиты в basic.cfg

Выделяются две закономерности. Игры, которые отправляют состояние мира по мере его изменения (Valheim, Arma, песочницы на выживание), стоят на игрока дороже, чем игры, отправляющие компактные предсказуемые обновления (Minecraft, Terraria). А Factorio - исключение: он выполняет симуляцию у всех клиентов синхронно (lockstep) и отправляет только ввод игроков, поэтому огромный завод стоит по трафику не больше маленького - пока кто-нибудь не подключится, и ему не понадобится вся карта.

Важно именно исходящее направление#

Трафик несимметричен. Каждый игрок отправляет серверу свой ввод - движение, прицеливание, действия, - это мало и примерно постоянно, обычно 2-10 КБ/с. Сервер отправляет каждому игроку состояние всего вокруг него, и это растёт вместе с происходящим. Умножьте на число игроков - и исходящий канал сервера всегда заполняется первым.

Вот почему домашний хостинг упирается в проблемы на подключениях, которые выглядят быстрыми. У линии 250/25 входящего канала с избытком, а исходящего - 25 Мбит/с, около 3 МБ/с, и он делится со всем остальным в доме. Десять игроков Valheim по 100 КБ/с - это 1 МБ/с ещё до того, как кто-то наверху начнёт видеозвонок. Об этой стороне - статья домашний игровой сервер или аренда. В дата-центре канал для обычного игрового сервера не ограничение; там цифры на игрока важны в основном для понимания всплесков и для того, чтобы заметить неладное.

Всплески: подключения, смена карты и загрузки#

Стабильный трафик невелик. Большинство жалоб на трафик - о тех моментах, когда это не так.

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

Смена карты. Серверы на движке Source отправляют всех подключённых клиентов на экран загрузки одновременно. Если карты или её ассетов у клиентов ещё нет, их нужно скачать.

Загрузка контента. Здесь живут большие цифры, и здесь выбор в конфигурации решает, будет ли нагрузку нести ваш сервер:

  • Garry's Mod и другие игры на Source могут раздавать пользовательский контент прямо с игрового сервера, что медленно и конкурирует с игрой, или с веб-сервера FastDL, заданного через sv_downloadurl, или из Steam Workshop через resource.AddWorkshop в Lua-файле, и тогда клиенты скачивают из Steam, а не у вас. Настройка описана в статье Workshop и FastDL в Garry's Mod.
  • Ресурспаки Minecraft, заданные через resource-pack= в server.properties, скачиваются по указанному вами URL, а не с сервера. Разместите файл там, где выдержат нагрузку, и задайте resource-pack-sha1, чтобы клиенты его кэшировали.
  • FiveM при подключении стримит каждому игроку пользовательский транспорт, карты и одежду с сервера. Сервер с несколькими сотнями мегабайт стримящихся ассетов отправляет несколько сотен мегабайт каждому новому игроку, а игроки, пришедшие одновременно, делят канал. Урежьте то, что стримите; как - в статье MLO-карты и стриминг ассетов в FiveM.
  • Factorio имеет собственное ограничение для загрузки карты в server-settings.json: max_upload_in_kilobytes_per_second (0 - без ограничений) и max_upload_slots, ограничивающий, сколько игроков может скачивать карту одновременно. На домашнем подключении эти настройки не дают одному подключению заморозить игру всем остальным.

Настройки, которые меняют цифру#

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

Minecraft

Главный рычаг - view-distance (по умолчанию 10) в server.properties: число чанков, отправляемых вокруг каждого игрока, растёт квадратично, поэтому снижение с 10 до 8 убирает примерно треть данных чанков. simulation-distance влияет на CPU, а не на трафик. network-compression-threshold (по умолчанию 256) сжимает каждый пакет больше указанного числа байт; снижение экономит немного трафика ценой CPU, а -1 отключает сжатие, что имеет смысл только за прокси на той же машине. Paper добавляет ограничения скорости отправки чанков на игрока в paper-global.yml; названия ключей менялись между версиями, поэтому смотрите файл, который сгенерировала ваша сборка. Остальное - в статье оптимизация Paper.

Игры на движке Source

Трафик к каждому клиенту ограничен клиентской настройкой rate (байт в секунду) и рамками серверных sv_minrate и sv_maxrate. В играх на Source 1, таких как TF2 и Garry's Mod, sv_maxupdaterate ограничивает, сколько обновлений в секунду получает каждый клиент. В CS2 сетевая модель изменилась, и несколько старых cvar для обновлений на клиента убрали, поэтому конфиг времён CS:GO не переносится строка в строку - проверьте, какие настройки ваша игра ещё учитывает. Повышение tick rate в играх, где это разрешено, примерно пропорционально увеличивает трафик: 128 обновлений в секунду стоят примерно вдвое больше, чем 64. Этот компромисс объясняет статья что на самом деле означает tick rate.

Arma 3

Arma явно настраивается через basic.cfg. Ключи: MaxMsgSend, MaxSizeGuaranteed, MaxSizeNonguaranteed, MinBandwidth, MaxBandwidth, MinErrorToSend и MinErrorToSendNear. MinBandwidth и MaxBandwidth говорят серверу, что он может предполагать о собственном подключении, и MaxBandwidth, выставленный намного ниже реальной пропускной способности, - классическая причина рассинхрона на сервере, у которого запаса хватает с избытком. MinErrorToSend определяет, насколько объект может сместиться, прежде чем будет отправлено обновление; меньшие значения дают более плавное движение вдали и больше трафика. Меняйте по одному параметру и проверяйте на полной миссии.

Valheim

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

Зрители, прокси и ретрансляторы#

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

Ретрансляторы для зрителей. Серверы на движке Source могут запускать SourceTV (GOTV в Counter-Strike), который по сути - дополнительный клиент, получающий полное состояние игры и ретранслирующий его зрителям. Игровой сервер отправляет один поток ретранслятору; ретранслятор отправляет поток каждому зрителю. Если оба работают на одной машине, каждый зритель стоит примерно как игрок. tv_maxclients ограничивает, сколько зрителей может смотреть напрямую, а турнир с большой аудиторией должен выносить зрителей на отдельные ретрансляторы, а не на сервер матча. Настройки - в статье GOTV и демо в CS2.

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

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

Расчёт исходящего канала под число игроков#

Арифметика простая: число игроков, умноженное на значение на игрока, плюс запас на подключения и всплески. Множитель 1,5 - разумный запас для обычной игры; больше, если ваш сервер раздаёт контент через игровой порт.

СерверСтабильный исходящийС запасом 1,5x
10 игроков в Minecraft по 15 KB/s150 KB/s, 1.2 Mbit/s1.8 Mbit/s
10 игроков в Valheim по 100 KB/s1 MB/s, 8 Mbit/s12 Mbit/s
24 игрока в TF2 по 45 KB/s1.1 MB/s, 8.6 Mbit/s13 Mbit/s
32 игрока в Project Zomboid по 40 KB/s1.3 MB/s, 10 Mbit/s15 Mbit/s
60 игроков в Arma 3 по 120 KB/s7.2 MB/s, 58 Mbit/s86 Mbit/s

Помните о пересчёте: 1 МБ/с - это 8 Мбит/с. Скорость подключения указывают в битах, игровой трафик обычно измеряют в байтах, и если их перепутать, ответ будет неверным в восемь раз.

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

Как измерить, что на самом деле отправляет ваш сервер#

Для планирования оценок хватает. Когда что-то не так - измеряйте.

На Linux-машине или VDS, которыми вы управляете:

bash
# Live totals per interface, refreshed every second$ vnstat -l -i eth0# Live traffic per remote address - who is the server talking to?$ sudo iftop -i eth0 -P# Live traffic per process$ sudo nethogs eth0

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

В самой игре у игр на Source 1 на клиенте есть net_graph 1, который показывает входящую и исходящую скорость и потери. Попросите игрока прочитать цифры, когда на сервере оживлённо; так вы узнаете, что на самом деле получает один клиент.

Когда дело не в трафике#

Большинство «лагов» на арендованном сервере - не трафик. Грубый способ отличить:

  • Лагают все одновременно, а CPU сервера высокий. Сервер пропускает тики. Это проблема CPU; см. статью CPU или RAM для игровых серверов.
  • Лагает один игрок, у остальных всё хорошо. Дело в его подключении: Wi-Fi, перегруженный домашний исходящий канал, потеря пакетов на его маршруте.
  • Скачки лагов, когда кто-то подключается. На домашнем сервере это может быть трафик; на арендованном чаще - нагрузка на CPU от загрузки чанков или областей для нового игрока.
  • Откаты только возле оживлённых мест. Нагрузка от сущностей или, в Valheim, игрок с плохим подключением, которому принадлежит зона.

Как примерно за минуту понять, что из этого перед вами, объясняет статья задержка, джиттер и потеря пакетов.

FAQ#

Какая скорость отдачи нужна, чтобы держать сервер Minecraft?

Для небольшой группы - совсем немного: 10 игрокам нужно около 1,2 Мбит/с в обычном режиме и в несколько раз больше, пока стримятся новые чанки. Отдачи 10 Мбит/с хватает большинству компаний друзей, если домашние не нагружают её в то же время.

Использует ли больший мир больше трафика?

Сам по себе - нет. Трафик зависит от того, что рядом с каждым игроком, а не от размера мира. Больший мир занимает больше диска и, если игроки разбредаются, больше CPU и памяти. Исключение при подключении - Factorio, где скачивается всё сохранение.

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

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

Увеличивают ли моды трафик?

Моды, добавляющие сущности, эффекты или частые обновления, увеличивают стабильный трафик. Моды, добавляющие контент, увеличивают трафик при подключении, когда клиентам нужно его скачать. Моды, которые меняют только серверную логику, обычно ничего не добавляют.

Хватит ли 100 Мбит/с для игрового сервера?

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


Комментарии

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

0/2000