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

Guia do Lag em Jogos › L9 Processo do jogo no servidor

Acúmulo na fila de mensagens Mailbox / job queue backlog

ID da causa sp-queue · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)

Abrir o card interativo, com figuras e simulações →

Quando os pedidos chegam mais rápido do que são processados e se acumulam na fila, os últimos da fila só são processados segundos depois ou são descartados.

Por quê Os pedidos chegam mais rápido do que são processados → Efeito A fila cresce e, ao passar do limite, os pedidos são descartados → Na tela Skills e trocas respondem com atraso ou não saem

Sintomas
Input lag, Ação perdida / rollback
Fatores
Latência, Perda de pacotes
Quem é afetado
Local ou canal específico, Só um recurso específico
Quando
Quando junta muita gente
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Monitorar o tamanho da fila, ter uma política que descarta primeiro os pedidos velhos, paralelizar o processamento.
No gráfico
Achata ao bater no limite · Tamanho da fila e idade da mensagem mais antiga, processados por segundo
Onde olhar
O que o servidor registra por fila: tamanho, idade da mensagem mais antiga, mensagens recebidas, processadas e descartadas por segundo. Sem métricas no código, o Recv-Q do socket do jogo (o que o kernel recebeu e o processo ainda não leu) com ss (ou netstat)
Confirma se
Enquanto as chegadas superam o processamento, os processados por segundo não passam de um certo valor, e o tamanho e a idade da fila e os descartes não param de subir
Descarta se
Fila curta e mensagens novas, mas a resposta demora: latência da conexão ou atraso do próprio tick
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Casos reais
CCP Games 2014: EVE Online: sobrecarga do servidor na grande batalha de frotas em HED-GP

Fontes

  1. Avoiding insurmountable queue backlogs AWS
    Amazon Builders' Library. Monitorar o acúmulo pela idade das mensagens na fila; sistemas em tempo real processam primeiro os dados novos (mais perto de LIFO) e às vezes descartam mensagens antigas
  2. Site Reliability Engineering, Chapter 22: Addressing Cascading Failures Google
    Quando os pedidos chegam mais rápido que o processamento, a fila enche e a latência sobe; trocar o FIFO por LIFO ou CoDel tira da fila os pedidos antigos que já perderam a utilidade
  3. ss(8) — Linux manual page iproute2
    Ferramenta que mostra estatísticas de sockets (informações parecidas com as do netstat); -p mostra o processo que usa o socket
  4. netstat(8) — Linux manual page net-tools
    Recv-Q: número de bytes em um socket conectado que o programa do usuário ainda não leu

Veja também

Mesma camada: L9 Processo do jogo no servidor

Mesmo sintoma (Input lag) em outras camadas

Ver o card interativo, com figuras e simulações