TeaHost
панельмониторинг5 мин. чтения

Нагрузка на игровой сервер: мониторинг в панели

Нагрузка на игровой сервер: как читать графики CPU, RAM и диска в панели, что означает 100% одного ядра, где смотреть TPS и когда пора менять тариф.

Кратко

Графики CPU, RAM и диска в панели показывают нагрузку снаружи, а честнее всего состояние сервера говорит TPS в Minecraft (норма 18–20) и server.fps в Rust. 100% CPU в панели — это одно занятое ядро, а не потолок тарифа. Прежде чем менять тариф, снимите профиль через spark и проверьте сущности и плагины.

Игроки пишут «лагает», а в панели всё зелёное — знакомая ситуация. Нагрузка на игровой сервер редко бывает равномерной: процессор может быть загружен на 20%, при этом одно ядро упирается в потолок, и именно оно тормозит весь мир. Разберём, что показывают графики в панели, какие числа считать нормой и по каким признакам понять, что проблема не в железе, а в конфиге.

Из чего складывается нагрузка на игровой сервер

Четыре метрики, которые видно в панели, и одна, которую видно только изнутри игры.

CPU. Главный ресурс для большинства игровых серверов. Minecraft почти полностью однопоточный: основной тик мира считается в одном потоке, и сколько бы ядер ни было, мир быстрее не станет. Rust и Palworld параллелятся лучше, но и там есть узкие однопоточные места.

RAM. Оперативная память. Здесь важен не столько процент занятого, сколько поведение: у Java-сервера память постоянно растёт и падает — это нормальная работа сборщика мусора. Тревожно, когда график упирается в потолок и остаётся там.

Диск. Операции чтения и записи. Всплески при автосохранении и бэкапе ожидаемы. Постоянно высокий I/O — признак тяжёлого мира или слишком частых сохранений и бэкапов.

Сеть. Входящий и исходящий трафик. Для 20 игроков в Minecraft это единицы мегабит; аномальный рост при обычном онлайне — повод заподозрить атаку.

TPS и FPS сервера. Внутренняя метрика игры, и она честнее всех остальных. В Minecraft tps показывает тики в секунду: 20.0 — идеал, 18–20 — нормально, ниже 15 — игроки уже чувствуют. В Rust server.fps работает так же: 60 хорошо, ниже 20 — сервер захлёбывается.

Как читать графики

Мгновенное значение почти бесполезно, смотрите на форму кривой за час-сутки.

  • Ровная линия под потолком. Ресурс исчерпан. Для CPU это значит, что сервер не успевает обсчитывать тик, для RAM — что вот-вот прилетит OutOfMemoryError.
  • Пила с ростом основания. Классика утечки памяти: пики становятся выше от часа к часу, минимумы тоже ползут вверх. Лечится перезапуском как симптом и поиском виноватого плагина как причина.
  • Регулярные всплески по расписанию. Совпадают с бэкапом или сохранением мира. Если они мешают — разнесите задачи по времени, как описано в статье про планировщик задач.
  • Скачок при заходе игрока. Генерация новых чанков — самая тяжёлая операция в Minecraft. Если сервер проседает каждый раз, когда кто-то уходит в неизведанные земли, помогает предварительная генерация мира и ограничение border.
  • Резкий провал в ноль. Сервер упал. Смотрите лог за минуту до провала.

100% CPU — не всегда беда

Частая паника: панель показывает 100%, значит, тариф маловат. Не обязательно.

Панели считают процент по-разному. В Pterodactyl и на тарифах TeaHost 100% означает «одно ядро полностью занято», а потолок тарифа указан в той же шкале: Micro — 100%, Start — 200%, Classic — 250%, Pro — 300%, Mega — 400%, Ultra — 600%, God — 800%. Для Minecraft упереться в 100% — норма при активном мире, ведь основной тик живёт в одном потоке, а вот 380% из 400% — уже реальная проблема.

Полезнее ориентироваться на TPS: если процессор загружен, но TPS держится 19–20, играть комфортно и трогать ничего не нужно.

Память: сколько нужно и когда мало

Ориентиры для ванильного сервера — та же шкала, по которой подобраны тарифы TeaHost. Моды и плагины делят эти цифры: для Minecraft примерно вдвое, для Rust и CS2 — в 1,5 раза, для Palworld — в 1,25 раза.

ПамятьMinecraftRustCS2Palworld
2 ГБдо 5 игроков—до 12—
4 ГБдо 15до 10, карта около 2000до 24до 8
6 ГБдо 25до 25, карта до 2500до 32до 16
8 ГБдо 40до 50, карта до 3000до 64 (предел игры)до 24
12 ГБдо 70до 100, карта до 3500—до 32 (предел игры)
16 ГБдо 100до 150, карта до 4000——
24 ГБдо 150до 200, карта 4000–4500——

Минимум для Rust и Palworld — 4 ГБ. Сборки на 100+ модов Minecraft обычно начинают с 6–8 ГБ, а память Palworld растёт по мере обживания карты, поэтому без ежедневного перезапуска закладывайте ступень выше.

Признак нехватки — не высокий процент, а поведение. Java-сервер при нехватке памяти начинает лагать рывками каждые несколько секунд: сборщик мусора запускается всё чаще и на всё дольше. В логе это видно по строкам вида Can't keep up! Is the server overloaded?.

При этом выделять серверу всю доступную память — ошибка. Оставьте 1–2 ГБ операционной системе, иначе процесс убьёт OOM-killer.

Что делать, когда лагает

Порядок диагностики, который экономит деньги на апгрейде.

  1. Проверьте TPS изнутри. Если он в норме, а игроки жалуются, проблема в сети или на стороне клиентов, а не в сервере.
  2. Снимите профиль. В Paper и Purpur есть spark: команда /spark profiler start, через пару минут /spark profiler stop — и вы получите отчёт с раскладкой по плагинам (все команды spark). Это единственный способ узнать виновника наверняка, а не гадать.
  3. Посмотрите на количество сущностей. Ферма мобов, тысяча предметов на полу, стада животных в загоне — частая причина просадки. Команда /spark tps и подсчёт сущностей по чанкам покажут очаг.
  4. Отключите плагины по одному. Грубый, но рабочий метод, когда профайлера нет.
  5. Только потом думайте о тарифе. Апгрейд не спасёт сервер, где один криво написанный плагин съедает половину тика.

Конкретные настройки для Minecraft разобраны в статье про оптимизацию сервера, а более широкий разбор мониторинга — в материале как мониторить нагрузку сервера.

Когда пора менять тариф

Честные признаки, что дело действительно в ресурсах:

  • TPS стабильно ниже 17 при штатном онлайне, профайлер не показывает одного явного виновника, нагрузка размазана по всем системам.
  • Память упирается в лимит на пустом сервере сразу после запуска — сборка просто не влезает.
  • Игроков стало вдвое больше, чем было при выборе тарифа, и просадки начались ровно с ростом онлайна.
  • Диск постоянно занят операциями, а мир весит десятки гигабайт.

Как проходит переход на более мощный тариф, описано в статье про апгрейд игрового сервера.

Если же нагрузка растёт скачками без роста онлайна, а трафик подозрительно велик — это может быть не производительность, а атака; тогда смотрите в сторону DDoS-защиты.

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