- Diferenças de ambiente: às vezes, o comportamento do servidor de jogo pode ser diferente entre o ambiente local e o serviço ao vivo.
- Integridade do servidor: talvez você precise se conectar diretamente para investigar se o servidor está sinalizado como não íntegro.
- Anexar diretamente um criador de perfil/depurador: pode ser mais simples criar o perfil do código por meio de uma conexão direta.
- Análise de logs em tempo real: se você seguir as instruções em Arquivando e recuperando logs de servidores multijogador, obterá os logs quando um servidor for desligado. Para ver logs em tempo real, talvez você queira se conectar diretamente.
Estas são instruções avançadas de depuração de contêineres do Docker. Usar essas instruções pode danificar seus servidores de jogo. Não recomendamos usar esses comandos em contêineres que executam seus servidores de jogo de produção. Recomendamos fortemente que você não dependa de nenhum comportamento ou informação que observar durante a depuração dos contêineres. Somente APIs e comportamentos documentados publicamente têm suporte; outros aspectos podem mudar sem aviso prévio.
Instruções para Windows e Linux
Como posso começar a usar contêineres do Docker?
Independentemente de você estar desenvolvendo no Linux ou no Windows, você deve se familiarizar com os conceitos básicos dos contêineres do Docker. Você pode ver o guia “Get Started” do docker aqui (link externo). Para saber mais sobre contêineres do Windows, consulte Windows e contêineres.Depois de me conectar à VM por RDP/SSH, como posso ver uma lista dos meus servidores de jogo em execução em contêineres do Docker?
Use docker ps. Você verá o nome e os hashes dos contêineres e o mapeamento de portas da(s) porta(s) da VM para a(s) porta(s) do contêiner do Docker.Como posso ver as portas usadas pelos meus servidores de jogo?
Essas informações são listadas em docker ps:0.0.0.0:30000->3600/tcpindica que a porta 30000 da VM está mapeada para a porta 3600 do contêiner para TCP0.0.0.0:30001->3601/udpindica que a porta 30001 da VM está mapeada para a porta 3601 do contêiner para UDP
No Windows e no Linux, os contêineres do Docker fazem parte da rede “playfab” do Docker. Use
docker inspect network playfab para ver informações sobre a rede do PlayFab.Como posso ver os detalhes de runtime de um contêiner?
Depois de executar docker ps para obter o nome do contêiner, você pode executar docker inspect <ContainerName>. Você verá muitas informações, como o estado do contêiner, a associação de volumes na VM host, as associações de portas, as variáveis de ambiente passadas ao contêiner e muito mais.Como posso obter os logs do meu servidor de jogo?
Você pode usar o comando docker logs <nameOrHash>. Esses logs contêm tudo o que seu aplicativo envia para os fluxos de saída padrão/erro padrão. Lembre-se de que esses logs só estão presentes para contêineres existentes. Se o seu servidor de jogo falhar, nosso processo de monitoramento na VM excluirá o contêiner e criará um novo. É uma prática melhor usar o GSDK para registrar logs de dentro do servidor de jogo. Para saber mais, consulte Registro em log com o GSDK e Arquivando e recuperando logs de servidores multijogador para acessar os logs de servidores de jogo encerrados.Posso me conectar “dentro” de um contêiner em execução para ver o que está acontecendo?
Você pode executar docker exec -it <nameOrHash> PowerShell no Windows e docker exec -it <nameOrHash> bash no Linux. Lá, você obtém acesso a um processo de linha de comando no contêiner, no qual pode emitir comandos nativos para depurar/diagnosticar problemas. Para que esse comando funcione no Linux, o shell Bash deve estar instalado no seu contêiner base. Se não estiver, você pode usar o shell Bourne executando docker exec -it <nameOrHash> sh.Como posso ver as portas abertas no meu contêiner?
Depois de se conectar “dentro” do contêiner, você pode usar netstat -ano no Windows e netstat -tulpn no Linux quando tiver um processo de linha de comando dentro do contêiner (confira a instrução anterior). Se esse comando não funcionar no Linux, tente instalar o netstat com apt update && apt install net-tools. No Linux, você pode usar nestatst -tulpn dentro da VM para verificar se as portas estão realmente abertas. Lembre-se de que as portas da VM são diferentes das portas do contêiner; você pode ver esse mapeamento de portas com docker ps para seus contêineres.Instruções específicas do Linux
Como posso ver os diagnósticos do meu contêiner?
Você pode instalar apt install procps e, em seguida, executar:- ps -aux para os processos em execução no momento (observe que o processo principal no contêiner tem o PID 1. Se esse processo for encerrado, seu contêiner deixará de existir)
- top para informações de processos em tempo real
Como posso monitorar pacotes TCP e UDP?
- Considere usar uma ferramenta como o utilitário TCPdump (link externo).
- Execute apt update && apt install tcpdump para instalá-lo. Para usá-lo em uma porta específica, execute tcpdump port 7777 para TCP e tcpdump udp port 7778 para UDP.
Instruções específicas do Windows
Como posso determinar as DLLs necessárias que precisam estar no meu pacote de ativos?
Para obter instruções, consulte Determinando as DLLs necessárias. Este artigo também é útil se o seu servidor de jogo não iniciar devido a uma ou mais DLLs ausentes.O LocalMultiplayerAgent está falhando e reiniciando meu contêiner do Docker sem mensagens de erro. Socorro!
Quando ocorre uma falha, você vê uma saída semelhante aContainer [ContainerId] exited with exit code 1. Por exemplo:
- Verifique o PF_ConsoleLogs.txt em busca de alguma mensagem de erro útil
- Verifique se o seu pacote de ativos .zip contém todas as DLLs necessárias para o seu jogo. Para obter instruções, consulte Determinando as DLLs necessárias.
- Verifique o Log de Eventos do Windows para ver se há alguma informação útil sobre falhas do Docker
