Если процесс сервера падает из-за необработанной ошибки, у всех, кто был на этом сервере, одновременно обрывается соединение.
Почему Фатальная ошибка: обращение к несуществующему объекту (нулевая ссылка), некорректные данные, нехватка памяти и т. п. → Следствие Процесс сервера (или зоны) завершается → На экране Дисконнект у всех одновременно, прогресс после последнего сохранения может уйти в роллбэк
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Серверная инфраструктура
Команда разработки: задачи
Разбирать краш-дампы и исправлять причины, сохранять чаще.
Команда инфраструктуры: задачи
Настроить автоматический перезапуск процесса, сбор и хранение краш-дампов, мгновенный алерт при падении сервера.
На графике
Массовый обрыв соединений · число подключений, число перезапусков процесса
Где смотреть
Смотреть записи о core dump в coredumpctl list (время, PID, сигнал завершения) и записи менеджера сервисов (systemd) об аварийных завершениях и перезапусках. На серверах Windows смотреть дампы, сохранённые WER
Подтверждает
В момент, когда число подключений резко падает почти до 0, есть аварийное завершение процесса игрового сервера и core dump
Опровергает
Если процесс жив, а соединения оборвались, дело в сетевом оборудовании или таймауте простоя. Если есть запись о перезапуске watchdog после долгого зависания, дело в бесконечном цикле или дедлоке
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Источники
Collecting User-Mode DumpsMicrosoft Через отчёты об ошибках Windows (WER) можно настроить локальный сбор полных дампов и мини-дампов при падении программ пользовательского режима
systemd.service(5) — Linux manual pagesystemd Restart=on-failure автоматически перезапускает сервис при аварийном завершении, завершении по сигналу (в том числе с core dump) и срабатывании watchdog. Рекомендуется для долгоживущих сервисов
coredumpctl(1) — Linux manual pagesystemd list показывает core dump, сохранённые systemd-coredump: время падения, PID и сигнал, вызвавший падение