Limite da fila de login e pouca tolerância para reconexão Login queue cap / no reconnect grace
ID da causa in-login-queue · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento), Infraestrutura de servidores (Equipe de infraestrutura)
Quando as conexões se acumulam logo após um lançamento ou manutenção, a fila de login bate no limite e passa a recusar novas entradas, e quem estava esperando e cai por um instante perde a posição e volta para o fim da fila.
Por quê Há mais gente tentando entrar do que o servidor de login aguenta de uma vez, então existe uma fila, e quando ela fica longa demais novas entradas são recusadas para proteger o servidor → Efeito Quanto mais longa a fila, maior a espera, e nesse tempo basta o Wi-Fi ou a rede móvel cair por um instante para perder a posição → Na tela Não conecta / loading infinito, o jogo fecha com erro durante a espera e o jogador volta para o fim da fila
Logo após login ou manutenção, Horário de pico à noite
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento), Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de desenvolvimento)
Servidor: ajustar o limite da fila ao que o servidor de login realmente consegue processar, guardar por um tempo a posição de quem caiu durante a espera (tolerância para reconexão), mostrar a posição na fila e a espera estimada, registrar como métricas o tamanho da fila, as recusas e as quedas durante a espera. Cliente: se cair durante a espera, reconectar automaticamente à mesma posição sem fechar o jogo, espalhar os retries com backoff exponencial e jitter.
O que fazer (Equipe de infraestrutura)
Servidores/SO: medir com teste de carga, antes do lançamento, o limite de processamento dos servidores de login e de lobby, deixar máquinas reserva prontas para adicionar no lançamento, ver as métricas da fila no mesmo gráfico das tentativas de conexão.
Números de referência
No lançamento da expansão de FINAL FANTASY XIV em 2021, cada data center lógico recusava novas entradas quando a fila passava de 17.000 pessoas (Error 2002). Se a conexão caía durante a espera, o servidor de lobby esperava de dezenas de segundos a 1 minuto, e quem reconectava nesse prazo continuava do meio da fila.
No gráfico
Achata ao bater no limite · Tamanho da fila de login, recusas por limite atingido, quedas durante a espera
Onde olhar
Tamanho da fila, espera média, recusas por limite atingido e quedas durante a espera registrados pelos servidores de login e de lobby, no mesmo gráfico das tentativas de conexão
Confirma se
Logo após o lançamento ou a manutenção, enquanto o tamanho da fila bate no limite e fica achatado, as recusas sobem e as quedas durante a espera se concentram em jogadores de Wi-Fi e rede móvel
Descarta se
Fila curta, mas login lento: aponta para o BD (db-login-storm) ou para a fila de conexões do sistema operacional (so-backlog)
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Saiba mais
Lentidão no BD por avalanche de logins é tratada em “Avalanche de logins e queries N+1”, e estouro da fila de conexões do sistema operacional, em “Estouro da fila de conexões (backlog)”. Este verbete trata do design da fila de login que o jogo cria de propósito. O limite da fila é uma proteção do servidor de login e não pode ser removido: recusar cedo as requisições excedentes é o que permite continuar processando as que dá para processar. O essencial é reduzir o prejuízo que recusas e quedas causam ao jogador, e quanto mais longa a fila, mais os erros se concentram em jogadores com conexão instável, como Wi-Fi e rede móvel.
Response to Congestion (as of Dec. 11)Square Enix Quando a fila passava de 17.000 pessoas em um data center lógico, novas entradas eram recusadas para o servidor de login não cair (Error 2002); quem caía durante a espera tinha de dezenas de segundos a 1 minuto de tolerância do servidor de lobby para voltar ao meio da fila, e depois disso voltava para o fim
Using load shedding to avoid overloadAmazon Builders' Library Load shedding: recusar cedo as requisições excedentes para continuar processando as que dá para processar
Veja também
Mesma camada: L13 Arquitetura e operação de servidores