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

Анатомия игровых лагов › L11 Диск

Бэкап, сжатие и сканирование Backup / compression / scans

ID причины dk-backup · Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД

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

Когда ночной бэкап, сжатие логов или проверка безопасности занимают диск целиком, чтение и запись игрового сервера застревают.

Почему Запускается плановый бэкап или сжатие → Следствие Задание забирает большую часть пропускной способности диска и IOPS → На экране Лаги каждый день в одно и то же время

Симптомы
Микрофризы, Задержка ввода
Факторы
Остановка, Задержка
У кого
Весь сервер
Когда
С постоянным периодом
Ответственные
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД
Команда инфраструктуры: задачи
Серверы и ОС: понизить приоритет ввода-вывода для бэкапа, сжатия и сканирования, разнести их по времени. Серверы БД: делать бэкап с реплики.
На графике
Всплески с постоянным периодом · утилизация диска, время ожидания диска
Где смотреть
Через sar -d наложить по дням %util, await и aqu-sz из записей за последние несколько дней (суточные файлы в /var/log/sa, sadc должен собирать и данные дисков с ключом -S DISK), в эти же моменты через pidstat -d 1 найти процессы с наибольшими kB_rd/s и kB_wr/s и сверить с расписанием cron и таймеров systemd
Подтверждает
Каждый день в одно и то же время подскакивают await и %util, и в это время большую часть чтения и записи на диск занимают процессы бэкапа, сжатия или сканирования
Опровергает
Если время всплесков каждый день разное, плановое задание маловероятно. Если в эти моменты основную часть ввода-вывода даёт сам игровой сервер, дело в сохранениях и логах (dk-fsync, dk-sync-log)
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. ionice(1) — Linux manual page util-linux
    Задача класса idle получает время диска, только когда диском не пользуются другие программы
  2. Using Replication for Backups MySQL
    Бэкап с остановленной реплики не влияет на работу основной БД
  3. sar(1) — Linux manual page sysstat
    -d: await, aqu-sz и %util по устройствам из суточных файлов (по умолчанию /var/log/sa), данные дисков нужно собирать ключом -S DISK у sadc
  4. pidstat(1) — Linux manual page sysstat
    -d: kB_rd/s и kB_wr/s по процессам (объём чтения и записи на диск в секунду)

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

Тот же слой: L11 Диск

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

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