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

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

Запись core dump Core dump writing

ID причины dk-coredump · Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда разработки · Разработка сервера

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

При падении сервер пишет на диск несколько GB памяти, и перезапуск может задерживаться на несколько минут.

Почему Сервер падает и записывает всю память в файл → Следствие Пока пишутся несколько GB, перезапустить сервер нельзя → На экране Сервер падает, у всех дисконнект, после чего ещё долго ошибка входа

Симптомы
Ошибка входа / бесконечная загрузка
Факторы
Остановка
У кого
Весь сервер
Когда
Изредка, случайно
Ответственные
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда разработки · Разработка сервера
Команда разработки: задачи
Рассмотреть мини-дампы, где хранится только нужная часть памяти, исправить причину падения.
Команда инфраструктуры: задачи
Ограничить размер дампа (настройки core dump в ОС), использовать быстрый диск, отделить перезапуск от дампа (сжатие и выгрузку дампа делать отдельно после перезапуска).
На графике
Массовый обрыв соединений · число подключений, время перезапуска сервера
Где смотреть
Сопоставить время падения, размер core-файла (coredumpctl list и info или файл там, куда указывает core_pattern), время окончания записи файла и время, когда сервис снова поднялся, и смотреть в этом интервале wkB/s в iostat -x
Подтверждает
После падения, пока пишется core-файл на несколько GB, запись на диск держится около лимита, и перезапуск начинается только после окончания записи
Опровергает
Если core dump выключен или получился маленьким, а перезапуск всё равно долгий, дело в процессе старта сервера: загрузка карт, холодный кэш БД (db-cold-cache) и т. п.
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. core(5) — Linux manual page Linux man-pages
    RLIMIT_CORE задаёт предел размера core-файла, coredump_filter выбирает, какие области памяти включать, core dump можно передать по конвейеру в программу и обработать отдельно
  2. Minidump Files Microsoft
    Мини-дамп содержит только полезную часть информации аварийного дампа, поэтому создаётся быстро и занимает мало места
  3. coredumpctl(1) — Linux manual page systemd
    list: список core dump в журнале (TIME: время падения по данным ядра), info: подробности по каждому дампу и записанный на диск размер
  4. iostat(1) — Linux manual page sysstat
    -x: wkB/s (объём записи на диск в секунду)

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

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

Причины с тем же симптомом (Ошибка входа / бесконечная загрузка) на других слоях

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