- Diferencias de entorno: a veces, el comportamiento del servidor de juegos puede diferir entre el entorno local y el servicio en producción.
- Estado del servidor: puede que necesite conectarse directamente para investigar si el servidor está marcado como en mal estado.
- Adjuntar directamente un generador de perfiles/depurador: puede ser más sencillo generar perfiles del código mediante una conexión directa.
- Análisis de registros en tiempo real: si sigue las instrucciones de Archivado y recuperación de registros de servidores multijugador, obtendrá los registros cuando un servidor se apague. Para ver registros en tiempo real, puede que quiera conectarse directamente.
Estas son instrucciones avanzadas de depuración de contenedores de Docker. El uso de estas instrucciones puede dañar sus servidores de juegos. No recomendamos usar estos comandos en contenedores que ejecuten sus servidores de juegos de producción. Le recomendamos encarecidamente que no dependa del comportamiento ni de la información que vea al depurar los contenedores. Solo se admiten las API y los comportamientos documentados públicamente; otras cosas pueden cambiar sin previo aviso.
Instrucciones tanto para Windows como para Linux
¿Cómo puedo empezar con los contenedores de Docker?
Independientemente de si desarrolla en Linux o Windows, debería familiarizarse con los conceptos básicos de los contenedores de Docker. Puede ver la guía “Get Started” de Docker aquí (vínculo externo). Para obtener más información sobre los contenedores de Windows, consulte Windows y los contenedores.Una vez que me conecto mediante RDP/SSH a la máquina virtual, ¿cómo puedo ver una lista de mis servidores de juegos en ejecución dentro de contenedores de Docker?
Use docker ps. Verá el nombre y los hashes del contenedor y la asignación de puertos desde los puertos de la máquina virtual a los puertos del contenedor de Docker.¿Cómo puedo ver los puertos que usan mis servidores de juegos?
Esta información aparece en docker ps:0.0.0.0:30000->3600/tcpindica que el puerto 30000 de la máquina virtual está asignado al 3600 del contenedor para TCP0.0.0.0:30001->3601/udpindica que el puerto 30001 de la máquina virtual está asignado al 3601 del contenedor para UDP
Tanto en Windows como en Linux, los contenedores de Docker forman parte de la red de Docker “playfab”. Use
docker inspect network playfab para ver información sobre la red de PlayFab.¿Cómo puedo ver los detalles en tiempo de ejecución de un contenedor?
Una vez que ejecute docker ps para obtener el nombre del contenedor, puede ejecutar docker inspect <ContainerName>. Verá mucha información, como el estado del contenedor, el enlace de volúmenes en la máquina virtual host, los enlaces de puertos, las variables de entorno pasadas al contenedor y mucho más.¿Cómo puedo obtener los registros de mi servidor de juegos?
Puede usar el comando docker logs <nameOrHash>. Estos registros contienen todo lo que su aplicación envía a las secuencias de salida estándar/error estándar. Tenga en cuenta que estos registros solo están presentes para los contenedores existentes. Si su servidor de juegos se bloquea, nuestro proceso de supervisión en la máquina virtual elimina el contenedor y crea uno nuevo. Es una práctica mejor usar el GSDK para registrar desde dentro de su servidor de juegos. Para obtener más información, consulte Registro con el GSDK y Archivado y recuperación de registros de servidores multijugador para acceder a los registros de servidores de juegos finalizados.¿Puedo conectarme “dentro” de un contenedor en ejecución para ver qué está pasando?
Puede ejecutar docker exec -it <nameOrHash> PowerShell en Windows y docker exec -it <nameOrHash> bash en Linux. Ahí, obtiene acceso a un proceso de línea de comandos en el contenedor donde puede emitir comandos nativos para depurar o diagnosticar problemas. Para que este comando funcione en Linux, el shell Bash debe estar instalado en su contenedor base. Si no lo está, puede usar el shell Bourne ejecutando docker exec -it <nameOrHash> sh.¿Cómo puedo ver los puertos que están abiertos en mi contenedor?
Una vez que esté conectado “dentro” del contenedor, puede usar netstat -ano en Windows y netstat -tulpn en Linux cuando tenga un proceso de línea de comandos dentro del contenedor (consulte la instrucción anterior). Si este comando no funciona en Linux, pruebe a instalar netstat con apt update && apt install net-tools. En Linux, puede usar nestatst -tulpn dentro de la máquina virtual para ver que los puertos están efectivamente abiertos. Recuerde que los puertos de la máquina virtual son distintos de los puertos del contenedor; puede ver esta asignación de puertos con docker ps para sus contenedores.Instrucciones específicas de Linux
¿Cómo puedo ver diagnósticos sobre mi contenedor?
Puede ejecutar apt install procps y después:- ps -aux para los procesos actualmente en ejecución (observe que el proceso principal del contenedor tiene un PID de 1. Si este proceso muere, el contenedor desaparece)
- top para información de procesos en tiempo real
¿Cómo puedo supervisar los paquetes TCP y UDP?
- Considere usar una herramienta como la utilidad TCPdump (vínculo externo).
- Ejecute apt update && apt install tcpdump para instalarla. Para usarla con un puerto específico, ejecute tcpdump port 7777 para TCP y tcpdump udp port 7778 para UDP.
Instrucciones específicas de Windows
¿Cómo puedo determinar los archivos DLL necesarios que deben estar en mi paquete de recursos?
Para obtener instrucciones, consulte Determinación de los archivos DLL necesarios. Este artículo también es útil si su servidor de juegos no se inicia debido a uno o varios archivos DLL que faltan.LocalMultiplayerAgent se bloquea y reinicia mi contenedor de Docker sin mensajes de error. ¡Ayuda!
Cuando se produce un bloqueo, verá una salida similar aContainer [ContainerId] exited with exit code 1. Por ejemplo:
- Compruebe PF_ConsoleLogs.txt en busca de algún mensaje de error útil
- Compruebe si su paquete de recursos .zip contiene todos los archivos DLL necesarios para su juego. Para obtener instrucciones, consulte Determinación de los archivos DLL necesarios.
- Compruebe el registro de eventos de Windows para ver si hay información útil sobre errores de Docker
