Лимит очереди на вход и короткое окно переподключения Login queue cap / no reconnect grace
ID причины in-login-queue · Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента, Команда инфраструктуры · Серверная инфраструктура
Когда сразу после релиза или техработ идёт наплыв подключений, очередь на вход упирается в лимит и перестаёт принимать новых игроков, а тот, кто уже ждал, при коротком обрыве теряет место и снова оказывается в конце очереди.
Почему Желающих войти больше, чем сервер авторизации может принять за раз, поэтому есть очередь, а когда она слишком длинная, сервер ради самозащиты перестаёт ставить в неё новых игроков → Следствие Чем длиннее очередь, тем дольше ожидание, и за это время достаточно короткого обрыва Wi-Fi или мобильной сети, чтобы потерять место → На экране Ошибка входа / бесконечная загрузка, игра закрывается с ошибкой во время ожидания, ждать приходится снова с конца очереди
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента, Команда инфраструктуры · Серверная инфраструктура
Команда разработки: задачи
Сервер: подогнать лимит очереди под реальную производительность сервера авторизации, на какое-то время сохранять место игрока, у которого оборвалось соединение в очереди (окно переподключения), показывать номер в очереди и ожидаемое время, писать в метрики длину очереди, число отказов и число обрывов в очереди. Клиент: при обрыве в очереди автоматически переподключаться на то же место, не закрывая игру, разносить повторные попытки во времени экспоненциальной задержкой (backoff) со случайным разбросом (джиттером).
Команда инфраструктуры: задачи
Серверы и ОС: до релиза измерить нагрузочным тестом предел серверов авторизации и лобби, к релизу подготовить резервные машины, которые можно быстро подключить, смотреть метрики очереди на одном графике с числом попыток подключения.
Цифры для ориентира
При выходе дополнения FINAL FANTASY XIV в 2021 году, когда в очереди одного логического дата-центра было больше 17 000 человек, новые места не выдавались (Error 2002). Если соединение обрывалось во время ожидания, лобби-сервер ждал от нескольких десятков секунд до 1 минуты, и игрок, успевший переподключиться, продолжал с того же места в очереди.
На графике
Упор в лимит (плато) · длина очереди на вход, число отказов из-за лимита, число обрывов во время ожидания
Где смотреть
Вывести на один график с числом попыток подключения длину очереди, среднее время ожидания, число отказов из-за лимита и число обрывов во время ожидания по данным серверов авторизации и лобби
Подтверждает
Сразу после релиза или техработ длина очереди упирается в лимит и выходит на плато, в это время растёт число отказов, а обрывы во время ожидания приходятся в основном на игроков с Wi-Fi и мобильной сетью
Опровергает
Если очередь короткая, а вход медленный, причина в БД (db-login-storm) или в очереди подключений ОС (so-backlog)
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Подробнее
Замедление БД из-за наплыва входов разобрано в причине «Наплыв входов и запросы N+1», переполнение очереди подключений в ОС в причине «Переполнение очереди подключений (backlog)». Здесь речь о проектировании очереди на вход, которую игра вводит намеренно. Лимит очереди защищает сервер авторизации, и убрать его нельзя: чтобы сервер продолжал обрабатывать посильные запросы, лишние нужно отклонять как можно раньше. Поэтому важно уменьшить ущерб, который отказы и обрывы наносят игрокам, ведь чем длиннее очередь, тем больше ошибок достаётся игрокам с нестабильным подключением через Wi-Fi или мобильную сеть.
Response to Congestion (as of Dec. 11)Square Enix Когда в очереди логического дата-центра больше 17 000 человек, новые места не выдаются, чтобы сервер авторизации не упал (Error 2002). При обрыве во время ожидания лобби-сервер ждёт от десятков секунд до 1 минуты: успевший переподключиться игрок продолжает с того же места, остальные попадают в конец очереди
Using load shedding to avoid overloadAmazon Builders' Library Отсечение нагрузки (load shedding): лишние запросы отклоняются рано, чтобы сервер продолжал обрабатывать те, с которыми справляется
Смотрите также
Тот же слой: L13 Архитектура и эксплуатация серверов