Solución de problemas con las flotas de Amazon GameLift Servers - Amazon GameLift Servers

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.

Solución de problemas con las flotas de Amazon GameLift Servers

En este tema se proporciona orientación sobre cómo resolver los problemas con las EC2 flotas Amazon GameLift Servers gestionadas.

Problemas al crear una flota

Al crear una EC2 flota gestionada, el Amazon GameLift Servers servicio 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 Amazon GameLift Servers la creación de flotas. Una flota no puede albergar sesiones de juego ni jugadores hasta que alcance el estado Activo.

Para solucionar los problemas que impiden que las flotas se activen, es necesario identificar la fase de creación de flota en la que se produjo el problema y revisar los eventos y registros de creación de flota. Si los registros no aportan ninguna información útil, es posible que el problema se deba a un error de servicio interno. En ese caso, intente crear de nuevo la flota. Si el problema continúa, cargue de nuevo la compilación del juego para solucionar posibles daños en el archivo. También puede ponerse en contacto con el equipo de soporte de Amazon GameLift Servers o publicar una pregunta en el foro.

Descarga y validación de la compilación

Durante esta fase, Amazon GameLift Servers 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, observe los eventos y registros de la flota para identificar el problema. Entre las causas posibles se incluyen las siguientes:

  • Amazon GameLift Serversno se puede obtener el archivo de compilación comprimido (eventoFLEET_BINARY_DOWNLOAD_FAILED). Comprueba que se puede acceder a la ubicación de almacenamiento de la compilación, que estás creando una flota similar a la de la compilación y que Amazon GameLift Servers tienes los permisos correctos para acceder a ella. Región de AWS

  • Amazon GameLift Serversno se pueden extraer los archivos de compilación (eventoFLEET_CREATION_EXTRACTING_BUILD).

  • No se ha podido completar correctamente uno de los scripts de instalación incluido en los archivos de compilación (evento FLEET_CREATION_FAILED_INSTALLER).

Construcción de los recursos de flota

Normalmente, los problemas durante esta fase están relacionados con la asignación y la implementación de los recursos de flota. Entre las causas posibles se incluyen las siguientes:

  • El tipo de instancia solicitado no está disponible.

  • El tipo de flota solicitado (spot o bajo demanda) no está disponible.

Activación de los procesos del servidor de juegos

Durante esta fase, Amazon GameLift Servers está realizando una serie de tareas y probando elementos clave, como la viabilidad del servidor del juego, los ajustes de configuración del tiempo de ejecución y la capacidad del servidor del juego para conectarse al Amazon GameLift Servers servicio mediante el SDK del servidor.

nota

En esta fase, puede acceder de forma remota a una instancia de flota para seguir analizando los problemas. Consulte Conéctese remotamente a Amazon GameLift Servers instancias de flota.

Estos son algunos de los problemas que podría encontrar:

  • Los procesos del servidor no comienzan a ejecutarse. Esto sugiere que hay 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). Compruebe si ha configurado correctamente la ruta de lanzamiento y los parámetros de lanzamiento opcionales.

  • Los procesos del servidor empiezan 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, lo más probable es que el proceso del servidor no pueda comunicarse con el Amazon GameLift Servers servicio. Compruebe que el servidor de juegos haga correctamente estas llamadas al SDK del servidor (consulte Inicialización del proceso del servidor):

    • El proceso del servidor no se inicializa (evento SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT). El proceso del servidor no llama correctamente a InitSdk().

    • El proceso del servidor no notifica Amazon GameLift Servers cuando está listo para albergar una sesión de juego (eventoSERVER_PROCESS_PROCESS_READY_TIMEOUT). El proceso del servidor se inicializa, pero no llama a ProcessReady() a tiempo.

  • Hay un error en la solicitud de conexión de emparejamiento de VPC. Para las flotas que se crean con una interconexión de VPC (consulte Para configurar la interconexión de VPC con una nueva flota), la interconexión de VPC se realiza durante esta fase Activating (Activando). Si una interconexión de VPC devuelve un error por cualquier motivo, la flota nueva no podrá pasar al estado Activo. Puedes hacer un seguimiento del éxito o el fracaso de la solicitud de intercambio de pares llamando describe-vpc-peering-connections. Asegúrese de comprobar que existe una autorización de emparejamiento de VPC 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 Amazon GameLift Servers consola (edita los ajustes de asignación de capacidad de la flota) o llamando al comando. AWS CLI 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.

Las acciones de VPC no están autorizadas.

Este problema solo se aplica a las flotas para las que haya creado específicamente conexiones de emparejamiento de VPC (consulte. Emparejamiento de VPC para Amazon GameLift Servers Este escenario se produce porque el proceso de eliminación de una flota también incluye la eliminación de la VPC de la flota y de cualquier conexión de emparejamiento de VPC. Primero debe obtener una autorización llamando a la API de servicio for Amazon GameLift Servers CreateVpcPeeringAuthorization() o utilizando el comando AWS CLIcreate-vpc-peering-authorization. Una vez que tenga la autorización, puede eliminar la flota.

Amazon GameLift ServersRealtimeproblemas de flota

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 processEnding 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 Amazon GameLift ServersRealtimeejemplo de guion, 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 Realtime servidor (o las instancias de flota subyacentes) para que se reinicien. En este caso, cierra Amazon GameLift Servers automáticamente las sesiones de juego. Una vez que se liberan los servidores de Realtime, pueden iniciar nuevas sesiones de juego utilizando 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 Amazon GameLift Servers instancias de flota.

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.