한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Анатомия игровых лагов › L7 ОС сервера (ядро)

Плановые задания Cron jobs (log rotation, backup, scans)

ID причины so-cron · Основной ответственный Команда инфраструктуры · Серверная инфраструктура

Открыть карточку в основной версии с иллюстрациями и экспериментами →

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

Почему В заданное время запускаются задания ОС → Следствие Они делят CPU и диск с игровым сервером → На экране В определённое время, например каждый день в 4:00, микрофризы и слоумо

Симптомы
Микрофризы, Слоумо
Факторы
Остановка
У кого
Весь сервер
Когда
С постоянным периодом
Ответственные
Основной ответственный Команда инфраструктуры · Серверная инфраструктура
Команда инфраструктуры: задачи
Разнести задания по времени, понизить им приоритет (nice, ionice), отделить от игрового сервера (запускать на отдельном сервере).
На графике
Всплески с постоянным периодом · загрузка CPU, очередь диска, время тика сервера
Где смотреть
Собрать время запуска плановых заданий из crontab и systemctl list-timers и в моменты всплесков времени тика посмотреть через pidstat -u -d, какие процессы используют CPU и диск
Подтверждает
Время тика скачет каждый день (или каждый час) в одно и то же время, и в этот момент CPU и диск занимают процессы плановых заданий
Опровергает
Если всплески не привязаны к одному и тому же времени суток, причина в другом. Если всплески идут каждые несколько секунд или минут, это «Полная пауза GC на сервере» или «Одновременное срабатывание таймеров»
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. ionice(1) — Linux manual page util-linux
    Задания класса idle получают доступ к диску, только когда им не пользуются другие программы
  2. systemd.timer(5) — Linux manual page systemd
    RandomizedDelaySec сдвигает запуск планового задания на случайное время и уменьшает скопление нагрузки
  3. systemctl(1) — Linux manual page systemd
    list-timers: показывает юниты таймеров в порядке следующего запуска
  4. pidstat(1) — Linux manual page sysstat
    -u показывает CPU, а -d дисковый ввод-вывод по процессам

Смотрите также

Тот же слой: L7 ОС сервера (ядро)

Причины с тем же симптомом (Микрофризы) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами