Лаги сервера: CPU, RAM или диск — как понять, что тормозит

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

Команда EGN 7 мин чтения
Лаги сервера: CPU, RAM или диск — как понять, что тормозит
Содержание 14
  1. Коротко
  2. Шаги
  3. Условный пример разбора
  4. Что собрать перед решением о тарифе
  5. Частые ошибки с тарифом
  6. Симптом → причина → решение
  7. Как сделать в панели EGN
  8. Частые ошибки
  9. Вопросы и ответы
  10. По какому графику понять, что не хватает процессора?
  11. Как понять, что не хватает памяти?
  12. Почему лаги при нормальных CPU и памяти?
  13. Сколько ждать после изменения?
  14. Итог

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

Коротко

Лаги сервера дают три типа причин. Нехватка CPU видна как постоянно высокая загрузка процессора, из-за которой тики растягиваются. Нехватка памяти видна как график, который держится у лимита, и как сохранения, падения и OOM. Проблемы диска видны как долгая запись и чтение при нормальном CPU и памяти. Смотрите блок «Нагрузка» за неделю, а не один момент, и меняйте один ресурс за раз.

Шаги

  1. Откройте график за неделю. В карточке услуги в кабинете найдите блок «Нагрузка» и переключите период на «Неделя». Здесь три графика: процессор, память и диск, у каждого свой лимит и пик. Смотрите, когда лаги совпадают с пиками, а не только в среднем.

    Блок «Нагрузка» за 7 дней: процессор, память и диск

    Пример из тестового кабинета (данные стенда): тариф с 2 ГБ памяти и 3 ГБ диска. Память за неделю держалась выше 88 % шесть часов, пик 93 %. Процессор был в норме: средняя 23,5 %, пик 85 %. Диск занят на 290 МБ. Вывод по картинке: узкое место — память, а не процессор и не диск.

  2. Проверьте процессор. Если загрузка CPU почти всё время около лимита, а игроков мало, одна из причин в плагине или моде, который тратит время каждого тика. Профилировщик spark (плагин или мод; в логе тестового Paper 1.21.4 он уже запущен) даёт подробный отчёт: какие задачи съедают время. Меньше онлайна, меньше модов или тариф с сильным ядром — варианты.

  3. Проверьте память. Если график памяти у лимита и есть падения или долгие сохранения, сервер упирается в память. Смотрите статью про OutOfMemoryError: там разобрано, что такое heap и почему -Xmx должен быть меньше лимита. Если памяти не хватает, поднимайте тариф.

  4. Проверьте диск. Диск даёт лаги, когда сохранения, бэкапы или логи занимают много времени, а CPU и память в норме. Признаки: сохранение виснет, чтение чанков тормозит при исследовании новых мест, а объём занятого места растёт без остановки. Почистите старые бэкапы и логи, проверьте расписания, не держите запас места на грани.

    Симптом, метрика и действие для CPU, RAM и диска

    Схема выше — шпаргалка. Каждому ресурсу соответствует свой симптом и свой первый шаг. Не лечите CPU, если проблема в памяти, и наоборот.

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

Условный пример разбора

Игроки жалуются на задержки по вечерам. Открываете неделю: процессор около 25 % большую часть суток, но вечером пики до 85 %. Память держится выше 88 % именно в вечерние часы, как раз когда онлайн максимальный. Вывод: в пик не хватает памяти, а процессор загружается из-за неё же — сборщик мусора работает чаще. Решение — больший тариф по памяти или меньше модов.

Другой пример: процессор ровный, память в норме, но сохранения виснут каждую ночь. Смотрите диск: в это время запускаются бэкапы и чистка логов. Расписание сдвигается на другое время, и лаги уходят.

Что собрать перед решением о тарифе

Тариф стоит менять, когда график подтверждает нехватку ресурса. Прежде чем решать, соберите неделю данных и ответьте на четыре вопроса. Когда пики по процессору: в вечер, при максимальном онлайне или во время бэкапа? Что держит память: онлайн, моды или предгенерация? Сколько места занято на диске и как оно растёт? Совпадают ли лаги с расписаниями: бэкапы, рестарты, сохранения?

Если сервер стоит на вашем VPS, нагрузку можно проверить прямо по SSH. Команды ниже входят в стандартный набор Linux (для iostat нужен пакет sysstat):

Терминал
free -h
df -h /
vmstat 1 5
iostat -x 1 5

free -h показывает память, df -h / — заполнение диска, vmstat — загрузку процессора и очередь ожидания, iostat — время ожидания диска. Высокий wa в vmstat и высокий %util в iostat при низкой загрузке CPU — признаки проблемы диска, а не процессора.

Частые ошибки с тарифом

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

Симптом → причина → решение

Симптом Что смотреть Причина Решение
Тики растягиваются, CPU у лимита Процессор в «Нагрузке», строки Can't keep up! Тяжёлые задачи или нехватка ядра Профилировщик spark, меньше модов, тариф с сильным ядром
Сохранения и вылеты, память у лимита Память в «Нагрузке», OOM, Exit code 137 Нехватка памяти Проверить -Xmx, тариф с большей памятью
Сохранение виснет, CPU и память в норме Диск, время бэкапов Диск медленный или переполнен Почистить логи и бэкапы, сдвинуть расписания
Лаги только у части игроков Пинг и потери у игрока Связь игрока Проверить Wi-Fi и VPN, см. статью про Timed out
Лаги в одно и то же время Расписания, рестарты Совпадение задач Перенести рестарты и бэкапы на ночь

Как сделать в панели EGN

  1. Откройте карточку услуги в кабинете, блок «Нагрузка»; текущую загрузку смотрите ещё и на графиках страницы «Консоль».
  2. Переключите период на «Неделя» и отметьте пиковые часы: когда график подскакивает.
  3. Откройте «Расписания» и проверьте, совпадают ли бэкапы и рестарты с этими часами.
  4. Если память держится выше 85–90 % лимита, посмотрите «Запуск» и тариф.
  5. Если CPU перегружен, включите профилировщик spark на сервере в пиковый час и сравните отчёт с графиком.
Нагрузка за неделю: память у лимита 2,0 ГБ
Нагрузка за неделю: память у лимита 2,0 ГБ

Именно такой график подсказывает, что делать: в примере память держится у лимита, а процессор и диск в норме. Значит, решение здесь — память, а не процессор.

Частые ошибки

  • Смотреть на один момент. Один пик ни о чём не говорит. Нужен график за неделю.
  • Брать тариф «на всякий случай». Если узкое место память, процессор не поможет. Сначала найдите ресурс.
  • Менять несколько вещей сразу. После этого не поймёте, что помогло.
  • Винить сеть. Лаги от сети выглядят иначе: пинг скачет, а графики сервера ровные. Это отдельная история, см. статью про Timed out.
  • Игнорировать расписания. Бэкап и перезапуск, которые стартуют в час пик, дают лаги на ровном месте.

Вопросы и ответы

По какому графику понять, что не хватает процессора?

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

Как понять, что не хватает памяти?

Если график памяти держится у лимита, а в логах появляются OOM, Exit code 137 или долгие сохранения, памяти мало. Поднимайте тариф или уменьшайте нагрузку на память.

Почему лаги при нормальных CPU и памяти?

Скорее всего, диск: долгие сохранения, бэкапы, логи. Проверьте, что в это время запускается, и сдвиньте расписание.

Сколько ждать после изменения?

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

Итог

Лаги — это симптом, а причина у каждого сервера своя. Откройте график за неделю, найдите узкое место среди CPU, памяти и диска, и меняйте один параметр за раз. Тариф поднимайте, когда график подтверждает нехватку ресурса. Смежные статьи: про память, про Timed out и про сервер, который стартует и падает.

Сервер под игру за пару минут — egnetwork.ru

Читать далее

Вся рубрика →