Guia do Lag em Jogos › Buscar por sintoma
Desconexão: 51 causas e quem resolve
Também chamado de: caí do jogo, DC, “A conexão com o servidor foi perdida”
Abrir no catálogo de sintomas ilustrado →
A conexão cai durante a partida e o jogo volta para a tela de login ou para a janela de reconexão.
O travamento dura alguns segundos e aparece o aviso “A conexão foi perdida”. Se várias pessoas caem ao mesmo tempo, o problema está no servidor.
Nenhum pacote chegou dentro do timeout. Verifique quedas longas da conexão, timeout de inatividade, crash ou reinício do servidor, e servidor ou PC parados por mais tempo que o timeout (carregamento longo). Se o jogo fechou sozinho sem aviso, verifique primeiro um encerramento forçado do cliente (crash, falta de memória); a conexão vem depois.
Causas deste sintoma
L1 Processo do jogo no cliente
- Vazamento de memória no cliente: Quanto mais tempo o jogo fica aberto, mais memória ele usa; vai ficando lento e, no fim, é fechado à força. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Crash do cliente: Um erro não tratado fecha o jogo. Para o jogador, parece uma desconexão, mas o servidor está normal. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Verificações do anti-cheat (módulo de segurança do jogo): Para impedir trapaças, um módulo de segurança roda junto com o jogo e faz verificações periódicas. Se a verificação for pesada ou se o heartbeat (sinal periódico de que o cliente está ativo) trocado com o servidor de segurança atrasar, o jogo engasga ou a conexão cai. (Desenvolvimento do cliente (Equipe de desenvolvimento))
L2 SO e dispositivo do cliente
- App mobile em segundo plano: Se você tira o app da tela por um instante para ver uma notificação, o SO o suspende (suspend) alguns segundos depois e, nesse meio-tempo, o servidor desconecta você. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Troca Wi-Fi ↔ LTE/5G: Quando você sai de casa, o Wi-Fi cai e o celular passa para LTE/5G; seu endereço IP muda e a conexão existente deixa de valer. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Limitação de processamento com a janela minimizada ou inativa: Quando você olha outra janela ou minimiza o jogo, o jogo e o Windows passam a rodá-lo mais devagar para economizar energia. Ao voltar, os pacotes acumulados chegam de uma vez, ou a conexão já caiu. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Interferência de programas de overlay: Mensageiros, launchers, gravadores e programas que mostram FPS entram no processo de renderização do jogo (hooking) para desenhar a própria UI por cima da tela. Cada frame ganha mais trabalho e, de vez em quando, o overlay entra em conflito com o jogo, causando engasgos ou o encerramento forçado do jogo. (Externo (Externo))
L3 Rede doméstica
- Expiração do mapeamento NAT: O roteador apaga da tabela NAT as conexões ociosas, sem tráfego por um tempo. É uma causa comum de a conexão cair no instante em que o jogador volta a se mexer depois de ficar parado. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Roteador fraco ou superaquecido: Quando um roteador barato recebe dezenas de dispositivos e milhares de conexões, o próprio roteador não dá conta de processar tudo. (Externo (Externo))
- Handover entre antenas (em movimento): Ao se deslocar de ônibus ou metrô, a comunicação cai enquanto o celular troca de antena. (Externo (Externo))
- Sinal de celular fraco e áreas de sombra: Em elevadores, subsolos e no interior de prédios, as retransmissões aumentam, a velocidade cai e, no fim, a conexão cai. (Externo (Externo))
L4 Conexão de internet
- Restrição de UDP e inspeção de pacotes por país ou operadora: Algumas redes bloqueiam endereços e portas UDP específicos ou limitam a velocidade do UDP, e equipamentos de inspeção de pacotes filtram protocolos que não reconhecem. Jogos que se comunicam por UDP não conectam nessas redes ou caem com frequência. (Externo (Externo))
- Qualidade ruim da linha: Mau contato nos conectores, fiação velha ou defeito no modem causam perda de pacotes constante e quedas periódicas da conexão. (Externo (Externo))
- Links compartilhados saturados por DDoS: Ataques volumosos contra a empresa do jogo, ou contra outro alvo na mesma rede, lotam os links compartilhados. (Infraestrutura de rede (Equipe de infraestrutura))
- IP compartilhado pela operadora (CGNAT): Redes móveis e algumas operadoras fazem vários assinantes dividirem um mesmo IP e apagam em pouco tempo o mapeamento das conexões ociosas. (Desenvolvimento do cliente (Equipe de desenvolvimento))
L5 Equipamentos de rede do data center
- Tabela de sessões do firewall cheia: O firewall registra na tabela de sessões cada conexão que deixa passar, para rastreá-la. Quando a tabela enche, ele não aceita novas conexões. (Infraestrutura de rede (Equipe de infraestrutura))
- Timeout de inatividade do load balancer: O load balancer apaga conexões ociosas depois de um tempo definido. O jogo continua tratando a conexão como ativa e, de repente, vem a desconexão. (Infraestrutura de rede (Equipe de infraestrutura))
- Expiração do rastreamento de conexões no grupo de segurança da nuvem: O firewall acoplado ao servidor na nuvem (grupo de segurança) também rastreia conexões, e as entradas de rastreamento de conexões ociosas expiram depois de um tempo definido. Mesmo em servidores acessados direto, sem load balancer, o jogador que ficou parado pode sofrer desconexão. (Infraestrutura de servidores (Equipe de infraestrutura))
- Failover de equipamento de rede: Quando um roteador ou firewall falha e o tráfego passa para o equipamento reserva (failover), o jogo trava para todo mundo por alguns segundos. (Infraestrutura de rede (Equipe de infraestrutura))
- MTU incompatível (só os pacotes grandes somem): Se o MTU (o tamanho máximo que dá para enviar de uma vez) diminui em algum trecho do caminho e os avisos de pacote grande demais são bloqueados, só os pacotes grandes continuam sumindo. (Infraestrutura de rede (Equipe de infraestrutura))
L6 Placa de rede do servidor
- Manutenção do host na nuvem e live migration: Quando o provedor de nuvem faz manutenção em um servidor físico (host), ele move as VMs para outro host (live migration) ou as pausa por um momento. Nesse tempo o servidor inteiro para, e se a pausa for longa as conexões caem. (Infraestrutura de servidores (Equipe de infraestrutura))
- Problemas de driver ou firmware da NIC: Quando um bug no driver ou um recurso com mau funcionamento faz a placa parar de responder, todo o tráfego de entrada e saída é interrompido enquanto ela reinicia. (Infraestrutura de servidores (Equipe de infraestrutura))
L7 SO do servidor (kernel)
- OOM killer: Quando a memória acaba, o Linux escolhe o processo que mais usa memória e o mata à força. Em geral, é o servidor do jogo. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Salto do relógio do sistema (step do NTP): Quando o relógio do servidor é ajustado alguns segundos para frente ou para trás de uma vez, os timers que dependem do relógio do sistema disparam todos juntos ou ficam parados. (Desenvolvimento do servidor (Equipe de desenvolvimento))
L8 Sockets e protocolos
- RTO do TCP e backoff exponencial: Cada vez que uma retransmissão falha de novo, o tempo de espera dobra, e uma queda curta da conexão vira uma pausa longa. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Política para clientes lentos (slow consumer): Para um cliente cujos dados a enviar não param de acumular, o servidor descarta as atualizações antigas ou derruba a conexão. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Perda dos últimos dados no encerramento forçado por RST: Quando o servidor fecha a conexão às pressas, o último aviso enviado ou o sinal de salvamento concluído se perde. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Distribuição desbalanceada do SO_REUSEPORT: Quando vários processos dividem a mesma porta, o kernel escolhe o processo responsável por cada conexão pelo hash do endereço e não muda mais. Se um desses processos para, só os jogadores atribuídos a ele ficam esperando. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Erro WSAECONNRESET em socket UDP no Windows: Quando um servidor Windows envia UDP para um cliente que já saiu, volta um aviso de “porta inexistente” (ICMP). Esse aviso faz a próxima chamada de recepção terminar com erro, e, se o código do servidor tratar esse erro como falha do próprio socket, todos que usam aquele socket são afetados. (Desenvolvimento do servidor (Equipe de desenvolvimento))
L9 Processo do jogo no servidor
- Deadlock: Quando duas threads esperam, cada uma, o lock que a outra segura, as duas ficam paradas para sempre. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Crash do servidor: Quando um erro não tratado derruba o processo do servidor, todos que estavam naquele servidor são desconectados ao mesmo tempo. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Loop infinito e lógica descontrolada: Quando um bug impede um tick de terminar, o servidor para e o watchdog o reinicia à força. (Desenvolvimento do servidor (Equipe de desenvolvimento))
L10 Memória
- Vazamento de memória: Memória que não é liberada vai se acumulando aos poucos e, depois de alguns dias, faz o GC rodar sem parar, causa swap ou leva a um encerramento forçado. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- GC thrashing (pouca folga no heap): Quando os dados vivos chegam perto do limite do heap, o GC roda, mas quase não tem o que recuperar, e passa a se repetir sem parar. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Fragmentação de memória: Quando alocações e liberações repetidas quebram o espaço livre em pedaços pequenos, o processo passa a ocupar muito mais memória do que realmente usa. (Desenvolvimento do servidor (Equipe de desenvolvimento))
L11 Disco
- Disco cheio: Quando logs e dumps se acumulam e o disco enche, as escritas falham e, se o código não estiver preparado para isso, o servidor cai. (Infraestrutura de servidores (Equipe de infraestrutura))
L12 Banco de dados
- Failover do banco de dados: Quando o BD primário cai, não dá para gravar durante a troca para o BD reserva, e os últimos dados que não foram replicados podem se perder. (Infraestrutura de banco de dados (Equipe de infraestrutura))
L13 Arquitetura e operação de servidores
- Tráfego via gateway ou proxy: Quando há um servidor intermediário entre o cliente e o servidor do jogo, cada passagem por ele soma tempo de processamento, e esse servidor vira um ponto único de falha. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Troca de mapa (transferência entre servidores): Ao entrar em outro mapa ou dungeon, os dados do personagem passam para outro servidor, e esse processo gera atrasos e falhas. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Deploy e reinício: Quando os servidores são reiniciados para uma atualização sem transferir as conexões, os jogadores daquele servidor são desconectados, e os salvamentos logo antes do desligamento e as reconexões chegam todos de uma vez. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Limite da fila de login e pouca tolerância para reconexão: 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. (Desenvolvimento do servidor (Equipe de desenvolvimento))
Design de sincronização
- Arquitetura com host (dono da sala): Quando o PC de um jogador faz o papel de servidor, a conexão e o desempenho do PC dele definem o que todos sentem. (Desenvolvimento do servidor (Equipe de desenvolvimento))
Problemas que só afetam alguns
- Falsos positivos da validação concentrados em uma operadora: Quem usa conexão com jitter alto tem os inputs chegando agrupados e cai com frequência nas checagens de velocidade e cooldown do servidor. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Conflito de porta UDP fixa: Se o cliente foi feito para usar uma porta local fixa, o segundo cliente no mesmo PC não consegue usar a porta ou divide os pacotes com o primeiro. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Bug na separação de sessões por IP ou dispositivo: Se o servidor ou um servidor intermediário distingue as conexões por IP ou ID do dispositivo, dois clientes no mesmo PC (mesmo IP público) são tratados como uma só pessoa. (Desenvolvimento do servidor (Equipe de desenvolvimento))
- Restrição a múltiplos clientes: Se o módulo de segurança ou uma política do servidor limita vários clientes em um PC, o segundo cliente é impedido de abrir ou de conectar, ou o primeiro que foi aberto é desconectado. Alguns jogos bloqueiam só as funções dos clientes adicionais. (Desenvolvimento do cliente (Equipe de desenvolvimento))
- Limitação de processamento da janela em segundo plano: Em um cliente que está em janela em segundo plano, o jogo, a engine e o SO reduzem frames e processamento. Os pacotes recebidos não são processados a tempo e acumulam ou estouram o buffer. (Desenvolvimento do cliente (Equipe de desenvolvimento))
Causas-raiz da retransmissão TCP
- Descarte pelo firewall ou pelo rastreamento de conexões: O firewall ou o rastreamento de conexões do Linux (conntrack, recurso que registra numa tabela as conexões que passam) descarta pacotes quando a tabela enche ou quando conclui que o estado da conexão não confere. (Infraestrutura de rede (Equipe de infraestrutura))
- Sobrecarga de equipamento intermediário (firewall, IPS, proteção contra DDoS): Firewalls, sistemas de prevenção de intrusão (IPS) e equipamentos de proteção contra DDoS inspecionam um por um os pacotes que passam. Quando a carga passa da capacidade de inspeção, eles descartam os pacotes que não conseguem processar. (Infraestrutura de rede (Equipe de infraestrutura))
- Black hole de MTU (perda repetida só dos pacotes grandes): Se algum trecho do caminho passa a aceitar só pacotes menores e o aviso de “grande demais” (ICMP) é bloqueado, os pacotes grandes continuam sumindo, por mais vezes que sejam reenviados. (Infraestrutura de rede (Equipe de infraestrutura))
- Expiração do mapeamento NAT ou do load balancer no meio da conexão: Se um equipamento no caminho apaga o mapeamento de uma conexão ociosa (a entrada que diz para onde encaminhar essa conexão), o próximo pacote enviado não é entregue. A conexão fica só retransmitindo até cair, ou o equipamento devolve uma recusa (RST) e ela cai na hora. (Desenvolvimento do cliente (Equipe de desenvolvimento))
Ver o catálogo de sintomas ilustrado