Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Depura problemas con la GameLift flota de Amazon
En este tema se proporciona orientación sobre cómo resolver problemas con tus EC2 flotas GameLift gestionadas por Amazon.
Problemas al crear una flota
Al crear una EC2 flota gestionada, el GameLift servicio de Amazon inicia un flujo de trabajo que crea la flota, despliega las EC2 instancias con la versión del servidor de juegos instalada e inicia los procesos del servidor de juegos en cada instancia. Para obtener una descripción detallada, consulte Cómo funciona la creación GameLift de flotas de Amazon. Una flota no puede albergar sesiones de juego ni jugadores hasta que alcance el estado Activo.
Puedes solucionar los problemas que impiden que las flotas se activen identificando la fase de creación de la flota en la que se produjo el problema y revisando los eventos y registros de creación de la flota. Si los registros no ofrecen información útil, es posible que el problema se deba a un error de servicio interno. En esta situación, intente volver a crear la flota. Si el problema persiste, intenta volver a cargar la versión del juego (para solucionar posibles daños en el archivo). También puedes ponerte en contacto con el GameLift soporte de Amazon o publicar una pregunta en el foro.
- Descargar y validar la compilación
-
Durante esta fase, Amazon GameLift obtiene la versión del servidor de juegos cargada, extrae los archivos y ejecuta los scripts de instalación. Si la creación de la flota falla durante estas fases, consulta los eventos y los registros de la flota para identificar el problema. Entre las causas posibles se incluyen las siguientes:
-
Amazon no GameLift puede obtener el archivo de compilación comprimido (evento
FLEET_BINARY_DOWNLOAD_FAILED
). Comprueba que se puede acceder a la ubicación de almacenamiento de la compilación, que estás creando una flota en la Región de AWS misma ubicación que la construcción y que Amazon GameLift tiene los permisos correctos para acceder a ella. -
Amazon no GameLift puede extraer los archivos de compilación (evento
FLEET_CREATION_EXTRACTING_BUILD
). -
Un script de instalación en los archivos de compilación no se completó correctamente (evento
FLEET_CREATION_FAILED_INSTALLER
).
-
- Construir recursos de flota
-
Los problemas durante esta fase suelen estar relacionados con la asignación y el despliegue de los recursos de la flota. Entre las causas posibles se incluyen las siguientes:
-
El tipo de instancia solicitado no está disponible.
-
El tipo de flota solicitado (puntual o bajo demanda) no está disponible.
-
- Activar los procesos del servidor del juego
-
Durante esta fase, Amazon GameLift está realizando una serie de tareas y probando elementos clave, como la viabilidad del servidor de juegos, los ajustes de configuración del tiempo de ejecución y la capacidad del servidor de juegos para conectarse con el GameLift servicio de Amazon mediante el servidorSDK.
nota
En esta fase, puedes acceder de forma remota a una instancia de la flota para investigar más a fondo los problemas. Consulte Conéctese remotamente a las instancias de GameLift la flota de Amazon.
Los posibles problemas incluyen:
Los procesos del servidor no comienzan a ejecutarse. Esto sugiere un problema con los ajustes de configuración del tiempo de ejecución de la flota (eventos
FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND
oFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE
. Comprueba que has configurado correctamente la ruta de lanzamiento y los parámetros de lanzamiento opcionales.-
Los procesos del servidor comienzan a ejecutarse, pero la flota no se activa. Si los procesos del servidor se inician y se ejecutan correctamente, pero la flota no pasa al estado Activo, una causa probable es que el proceso del servidor no se comunique con el GameLift servicio de Amazon. Comprueba que el servidor del juego realiza estas SDK llamadas correctas (consultaInicialización del proceso del servidor):
-
El proceso del servidor no se puede inicializar (evento
SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT
). El proceso del servidor no se llamaInitSdk()
correctamente. -
El proceso del servidor no notifica a Amazon GameLift cuando está listo para organizar una sesión de juego (evento
SERVER_PROCESS_PROCESS_READY_TIMEOUT
). El proceso del servidor se inicializó pero no llegó aProcessReady()
tiempo.
-
-
Se produjo un VPC error en una solicitud de conexión entre pares. En el caso de las flotas que se crean con una conexión de VPC emparejamiento (consultePara configurar la interconexión de VPC con una nueva flota), el VPC emparejamiento se realiza durante estas fases de activación. Si la VPC interconexión falla por cualquier motivo, la nueva flota no pasará al estado Activa. Puedes hacer un seguimiento del éxito o el fracaso de la solicitud de emparejamiento llamando. describe-vpc-peering-connections Asegúrate de comprobar que existe una autorización de VPC emparejamiento válida (describe-vpc-peering-authorizations, ya que las autorizaciones solo son válidas durante 24 horas).
Problemas con los procesos del servidor
- Los procesos del servidor arrancan pero dan error rápidamente o notifican que no están funcionando correctamente.
-
Aparte de los problemas con la compilación del juego, esto puede ocurrir al intentar ejecutar demasiados procesos del servidor simultáneamente en la instancia. La cantidad óptima de procesos simultáneos depende del tipo de instancia y de los requisitos de los recursos del servidor de juegos. Intente reducir el número de procesos simultáneos, que se define en la configuración del tiempo de ejecución de la flota, para ver si mejora el desempeño. Puedes cambiar la configuración de tiempo de ejecución de una flota mediante la GameLift consola de Amazon (edita la configuración de asignación de capacidad de la flota) o llamando al AWS CLI comando update-runtime-configuration.
Problemas de eliminación de la flota
- La flota no se puede terminar debido a un recuento máximo de instancias.
-
El mensaje de error indica que la flota que se está eliminando todavía tiene instancias activas, lo que no está permitido. En primer lugar, debe reducir una flota a cero instancias activas. Esto se realiza configurando manualmente el recuento de instancia de la flota deseado a "0" y, a continuación, esperar a que la reducción de escala surta efecto. Asegúrese de desactivar el escalado automático, que contrarrestará los ajustes manuales.
- VPClas acciones no están autorizadas.
-
Este problema solo se aplica a las flotas para las que haya creado conexiones de VPC peering específicamente (consulte. Emparejamiento de VPC para Amazon GameLift Este escenario se produce porque el proceso de eliminación de una flota también incluye la eliminación de la flota VPC y de cualquier conexión entre VPC pares. Primero debes obtener una autorización llamando al GameLift servicio de Amazon API CreateVpcPeeringAuthorization() o usando el AWS CLI comando
create-vpc-peering-authorization
. Una vez que tenga la autorización, puede eliminar la flota.
Problemas con la flota de Servidores en tiempo real
- Sesiones de juego zombies: inician y ejecutan un juego, pero nunca terminan.
-
Es posible que observe estos problemas como cualquiera de las siguientes situaciones:
-
Los servidores de Realtime de la flota no recogen las actualizaciones de script.
-
La flota alcanza rápidamente la capacidad máxima y no se reduce cuando disminuye la actividad de los jugadores (como, por ejemplo, las solicitudes de sesiones de nuevo juego).
Esto es casi seguro resultado de no conseguir una llamada correcta en el script de Realtime. Aunque la flota pasa a estar activa y las sesiones de juego se inician, no hay ningún método para detenerlas. Como resultado, el servidor de Realtime que está ejecutando la sesión de juego nunca se libera para iniciar una nueva y solo pueden iniciarse las nuevas sesiones de juego cuando se activan nuevos servidores de Realtime. Además, las actualizaciones en el script de Realtime no afectan a las sesiones de juego que ya están ejecutándose.
Para evitar que ocurra esto, los scripts tienen que proporcionar un mecanismo para activar una llamada
processEnding
. Tal y como se muestra en la Ejemplo del script de Realtime Servers, una forma consiste en programar un tiempo de espera de sesión inactiva donde, si no se conecta ningún jugador durante un cierto tiempo, el script finalizará la sesión de juego actual.Sin embargo, si se encuentra en esta situación, hay un par de soluciones para desbloquear los servidores de Realtime. El truco consiste en activar los procesos del servidor de Realtime (o las instancias subyacentes de la flota) para que se reinicien. En este caso, cierra GameLift automáticamente las sesiones de juego. Una vez que se liberan los servidores de Realtime, pueden iniciar nuevas sesiones de juego mediante la versión más reciente del script de Realtime.
Hay un par de métodos para lograrlo, en función de lo generalizado que esté el problema:
-
Reducir toda la flota. Este es el método es el más sencillo, pero tiene un efecto amplio. Reduzca la flota a cero instancias, espere a que la flota se reduzca totalmente y, a continuación, vuelva a aumentarla. Esto eliminará todas las sesiones de juego existentes y permitirá iniciar de cero con el script de Realtime actualizado más recientemente.
-
Acceda de forma remota a la instancia y reinicie el proceso. Se trata de una buena opción si tiene que corregir unos cuantos procesos. Si ya está conectado a la instancia, como, por ejemplo, a los registros de cola o depuración, este puede ser el método más rápido. Consulte Conéctese remotamente a las instancias de GameLift la flota de Amazon.
-
Si decide no incluir una forma de llamar a processEnding
en el script de Realtime, hay varias situaciones complicadas que podrían producirse incluso cuando la flota se activa y se inician las sesiones de juego. En primer lugar, la ejecución de una sesión de juego no finaliza. Como resultado, el proceso del servidor que está ejecutando dicha sesión de juego no está libre nunca para iniciar una nueva sesión de juego. En segundo lugar, el servidor de Realtime no recoge ninguna actualización de script.