Depurar problemas com a frota do Amazon GameLift - Amazon GameLift

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Depurar problemas com a frota do Amazon GameLift

Este tópico fornece orientações sobre problemas de configuração de frota para uma solução gerenciada do Amazon GameLift. Para obter uma solução de problemas adicional, é possível acessar remotamente uma instância de frota quando a frota estiver ativa. Consulte Conecte-se remotamente às instâncias da GameLift frota da Amazon.

Depurar problemas de criação de frotas

Quando uma frota é criada, o serviço Amazon GameLift inicia um fluxo de trabalho que implanta uma nova instância em cada local da frota e a prepara para executar os servidores de jogos. Para obter uma descrição detalhada, consulte Como funciona a criação de frota do Amazon GameLift. Uma frota não pode hospedar sessões de jogo e jogadores até atingir o status Ativo. Esta seção discute os problemas mais comuns que impedem que as frotas se tornem ativas.

Download e validação

Durante essa fase, a criação da frota pode falhar se houver problemas com os arquivos de compilação extraídos, se não for possível executar o script de instalação, ou se os executáveis designados na configuração do runtime não forem incluídos nos arquivos de compilação. O Amazon GameLift fornece logs relacionados a cada um desses problemas.

Se os logs não revelaram um problema, é possível que o problema tenha ocorrido devido a um erro interno de serviço. Nesse caso, tente criar a frota novamente. Se o problema persistir, faça upload da compilação de jogo novamente (caso os arquivos estejam corrompidos). Também é possível entrar em contato com o suporte do Amazon GameLift ou publicar uma pergunta no fórum.

Desenvolvimento

Problemas que causam falha durante a fase de compilação muitas vezes ocorrem devido a problemas com os arquivos de compilação de jogo e/ou o script de instalação. Observe que os arquivos de compilação do jogo, após o upload para o Amazon GameLift, podem ser instalados em um computador com o sistema operacional adequado. Use uma instalação limpa do sistema operacional, não um ambiente de desenvolvimento existente.

Ativação

Os problemas mais comuns na criação de frotas ocorrem durante a fase de Ativação. Durante essa fase uma série de elementos estão sendo testados, incluindo a viabilidade do servidor de jogos, as definições de configuração em runtime e a capacidade do servidor de jogos usar o SDK de servidor para interagir com o serviço do Amazon GameLift. Problemas comuns que surgem durante a ativação de frotas incluem:

Há falha na inicialização de processos do servidor.

Primeiro, verifique se você definiu corretamente o caminho de inicialização e os parâmetros de inicialização opcionais na configuração do tempo de execução da frota. Visualize a configuração de runtime atual da frota usando a página de detalhes da frota, )seção Detalhes ou chamando o comando describe-runtime-configuration da AWS CLI. Se a configuração do tempo de execução estiver correta, verifique se há problemas com os arquivos de compilação do jogo e/ou o script de instalação.

Os processos do servidor começam, mas a frota deixa de ser ativada.

Se os processos do servidor forem iniciados e executados com êxito, mas o status da frota não for alterado para Ativa, é provável que o processo do servidor não esteja notificando o Amazon GameLift de que ele está pronto para hospedar as sessões de jogos. Verifique se o servidor de jogos está chamando corretamente a ação de Server API ProcessReady() (consulte Inicializar o processo do servidor).

Falha na solicitação de conexão de emparelhamento de VPCs.

Para frotas que são criadas com uma conexão de emparelhamento de VPCs (consulte Como configurar o emparelhamento de VPC com uma nova frota), o emparelhamento de VPCs é feito durante essas fases de Ativação. Se um emparelhamento de VPCs falhar por qualquer motivo, haverá falha na mudança da nova frota para o status Ativo. Você pode rastrear o sucesso ou a falha da solicitação de emparelhamento chamando describe-vpc-peering-connections. Certifique-se de verificar se existe uma autorização de emparelhamento de VPCs válida (describe-vpc-peering-authorizations), uma vez que as autorizações são válidas por apenas 24 horas.

Problemas de processo do servidor

Os processos do servidor começam, mas falham rapidamente ou apresentam integridade insatisfatória.

Outros problemas com a compilação do jogo, podendo acontecer quando se tenta executar muitos processos de servidor simultaneamente na instância. O número ideal de processos simultâneos depende do tipo de instância e dos requisitos de recursos do servidor de jogos. Tente reduzir o número de processos simultâneos, algo definido na configuração de tempo de execução da frota, para ver se o desempenho melhora. É possível alterar a configuração de runtime de uma frota usando o console do Amazon GameLift (editar as configurações de alocação da capacidade da frota) ou chamar o comando update-runtime-configuration da AWS CLI.

Problemas de exclusão de frota

Uma frota não pode ser encerrada devido à contagem máxima de instâncias.

A mensagem de erro indica que a frota que está sendo excluída ainda tem instâncias ativas, o que não é permitido. Você deve primeiro reduzir uma frota para zero instâncias ativas. Isso é feito definindo manualmente a contagem de instâncias desejada da frota para "0" e aguardando até que a redução entre em vigor. Desligue a escalabilidade automática, pois ela neutralizará as configurações manuais.

As ações da VPC não estão autorizadas.

Esse problema se aplica somente às frotas para as quais você criou especificamente conexões de emparelhamento de VPC (consulte Emparelhamento de VPC para o Amazon GameLift. Esse cenário ocorre porque o processo de exclusão de uma frota também inclui a exclusão da VPC da frota e de qualquer conexão de emparelhamento de VPC. Primeiro, obtenha uma autorização chamando a API CreateVpcPeeringAuthorization() do serviço do Amazon GameLift ou usando o comando create-vpc-peering-authorization da CLI da AWS. Quando tiver a autorização, você pode excluir a frota.

Problemas com a frota de servidores em tempo real

Sessões de jogos zumbi: um jogo é iniciado e executado, mas nunca termina.

Você pode observar esses problemas como qualquer um dos seguintes cenários:

  • Atualizações de script não são selecionadas por servidores em tempo real da frota.

  • A frota atinge a capacidade máxima rapidamente e não reduz quando as atividades dos jogadores (como novas solicitações de sessão de jogo) é reduzida.

Isso é quase certamente um resultado de não chamar processEnding com êxito no script em tempo real. Embora a frota se torne ativa e as sessões de jogos sejam iniciadas, não há um método para interrompê-las. Como resultado, o servidor em tempo real que está executando a sessão de jogo nunca é liberado para iniciar uma nova, e as novas sessões de jogos só podem ser iniciadas quando novos servidores em tempo real forem rotacionados. Além disso, as atualizações no script em tempo real não afetam as sessões de jogo que já estão em execução, apenas as novas.

Para impedir que isso aconteça, os scripts precisam fornecer um mecanismo para acionar uma chamada de processEnding. Conforme ilustrado no Exemplo de script de servidores em tempo real, uma maneira é programar um tempo limite de sessão ociosa em que, se nenhum jogador estiver conectado por um determinado período de tempo, o script encerrará a sessão do jogo atual.

No entanto, se você se encaixar nesse cenário, há duas alternativas para destravar os servidores em tempo real. O truque é acionar os processos do servidor em tempo real (ou as instâncias da frota subjacentes) para reiniciar. Nesse caso, o GameLift fecha automaticamente as sessões de jogos para você. Assim que os servidores em tempo real são liberados, eles podem iniciar novas sessões de jogos usando a versão mais recente do script em tempo real.

Há dois métodos para fazer isso, dependendo de quão disseminado é o problema:

  • Reduza toda a frota. Esse método é o mais simples de executar, mas tem um efeito amplo. Reduza a frota para zero instância, aguarde até que a frota seja totalmente reduzida e expanda-a novamente. Isso limpará todas as sessões de jogos existentes e permitirá que você comece de novo com o script em tempo real atualizado mais recentemente.

  • Acesse a instância remotamente e reinicie o processo. Esta será uma boa opção se você tiver apenas alguns processos para corrigir. Se você já estiver conectado à instância, como para logs finais ou depuração, esse poderá ser o método mais rápido. Consulte Conecte-se remotamente às instâncias da GameLift frota da Amazon.

Caso opte por não incluir uma maneira de chamar processEnding no script em tempo real, haverá algumas situações delicadas que poderão ocorrer, mesmo quando a frota estiver ativa e sessões de jogos estiverem iniciadas. Primeiro, uma sessão de jogo em execução não termina. Como resultado, o processo do servidor que está executando a sessão do jogo nunca é liberado para iniciar uma nova sessão de jogo. Em segundo lugar, o servidor em tempo real não recebe nenhuma atualização de script.