¿Cómo soluciono los problemas de un trabajo de AWS Batch que está bloqueado en el estado EJECUTABLE?
Mi trabajo de AWS Batch está bloqueado en estado EJECUTABLE.
Descripción corta
AWS Batch mueve un trabajo al estado EJECUTABLE cuando no tiene dependencias pendientes y AWS Batch puede programarlo. Los trabajos EJECUTABLES se inician en cuanto haya suficientes recursos disponibles en uno de los entornos de computación asignados a la cola de trabajos.
Si los recursos necesarios para ejecutar un trabajo no están disponibles, el trabajo puede permanecer en estado EJECUTABLE.
Nota: La siguiente resolución soluciona los problemas de los trabajos de AWS Batch que se ejecutan en contenedores de Amazon Elastic Container Service (Amazon ECS). Estos contenedores pueden ejecutarse en instancias de Amazon Elastic Compute Cloud (Amazon EC2) o en entornos de computación de AWS Fargate. Para solucionar problemas de trabajos de AWS Batch que se ejecutan en Amazon Elastic Kubernetes Service (Amazon EKS), consulta AWS Batch en Amazon EKS.
Resolución
Primero, determina si tu trabajo bloqueado bloquea la cola de primero en entrar, primero en salir (FIFO). Si esto no resuelve el problema, automatiza la solución de problemas para determinar el problema o soluciona el problema manualmente.
Comprobación de si hay una cola FIFO bloqueada
Es posible que un trabajo quede bloqueado en el estado EJECUTABLE al principio de la cola de primero en entrar, primero en salir (FIFO) debido a los siguientes problemas:
- El trabajo no utiliza una programación equitativa, por lo que todos los demás trabajos que lo respaldan no pueden ejecutarse.
- Hay un error de configuración en tu cuenta de AWS.
- Tu cuenta no tiene acceso a las instancias necesarias para el trabajo. Por ejemplo, es posible que tu cuenta requiera un tipo de instancia de GPU.
Para desbloquear la cola FIFO, usa GetJobQueueSnapshot para encontrar el trabajo que bloquea la cola y, a continuación, cierra el trabajo.
Automatización del proceso de solución de problemas
Usa el runbook AWSSupport-TroubleshootAWSBatchJob para solucionar los problemas de un trabajo de AWS Batch que está bloqueado en el estado EJECUTABLE. O bien, completa los pasos de las siguientes secciones para solucionar el problema de forma manual.
Comprobación de si el entorno de computación tiene suficientes recursos para ejecutar el trabajo
Sigue estos pasos:
- Abre la consola de AWS Batch.
- En el panel de navegación, selecciona Panel.
- En la sección Información general sobre la cola de trabajos, en la columna EJECUTABLE, selecciona el trabajo que está bloqueado en el estado EJECUTABLE. Aparece la página de detalles del trabajo.
- Selecciona la pestaña Contenedores y, a continuación, anota los valores de vCPU, memoria y GPU para completar los pasos 9 y 10.
- En el panel de navegación, elige Colas de trabajos y, a continuación, elige tu cola de trabajos.
- En la pestaña Orden de los entornos, identifica los entornos de computación que están asociados a tu cola de trabajos.
- En el panel de navegación, elige Entornos y, a continuación, selecciona un entorno de computación para revisar sus permisos.
- En la sección Estado, confirma que la columna Estado del entorno de computación indique que es Válido.
Nota: Si se producen errores intermitentes o transitorios, es posible que el estado del entorno de computación tarde unos minutos en cambiar de Válido a No válido. - En la pestaña Detalles, comprueba que el rol de servicio asociado al entorno tenga todos los permisos necesarios.
- En la sección Estado, comprueba que la columna Estado indique Activado.
- En la pestaña Recursos de computación, marca el valor máximo de vCPU. Este valor debe ser lo suficientemente alto para que AWS Batch pueda aumentar la cantidad de vCPU deseadas para ejecutar los trabajos.
Nota: Si utilizas un entorno de computación de Fargate, consulta la sección Comprobación de la configuración de redes y seguridad del entorno de computación. - Comprueba que el valor de las vCPU deseadas sea igual o superior a la cantidad de vCPU que el trabajo necesita para ejecutarse.
- Si el valor de vCPU deseadas es 0, comprueba la cantidad de memoria y recursos disponibles en la CPU para tu tipo de instancia de Amazon EC2. Si el valor de vCPU deseadas es superior a 0 o tu trabajo sigue en estadoEJECUTABLE, sigue los pasos de la siguiente sección.
Repite los pasos 6 a 14 para cada entorno de computación.
Importante: Al menos uno de los tipos de instancias del entorno de computación debe tener más memoria de la que especifica el trabajo. Además, el tipo de instancia debe tener recursos de CPU iguales o superiores a los especificados en el trabajo. Si algún tipo de instancia no tiene suficiente memoria o recursos de CPU para ejecutar tu trabajo, cancela el trabajo. A continuación, ejecuta un nuevo trabajo que requiera menos CPU o memoria. Como alternativa, puedes crear un nuevo entorno de computación con recursos suficientes para ejecutar el trabajo y, a continuación, asignar el trabajo a la cola de trabajos correspondiente.
Comprobación de si el entorno informático tiene instancias y estas están disponibles para ejecutar el trabajo
Para el entorno de computación en el que se ejecuta tu trabajo, sigue estos pasos:
- Abre la consola de Amazon ECS.
- En el panel de navegación, elige Clústeres y, a continuación, selecciona el clúster que contenga tu trabajo.
Nota: El nombre del clúster comienza con el nombre del entorno de computación, seguido de _Batch_ y un hash aleatorio de números y letras. - Selecciona la pestaña Infraestructura.
- En la sección Instancias de contenedor, busca tus instancias de contenedor y, a continuación, verifica que estén disponibles para ejecutar tu trabajo.
Si el clúster tiene una instancia de contenedor disponible para ejecutar tu trabajo, comprueba el estado del daemon de Docker y del agente contenedor de Amazon ECS. Para obtener más información, consulta ¿Cómo soluciono los problemas de un agente de Amazon ECS desconectado?
Si no hay instancias en el clúster de Amazon ECS, comprueba si puedes crear instancias en tu entorno de computación.
Entorno de computación bajo demanda
Sigue estos pasos:
-
Abre la consola de Amazon EC2.
-
En el panel de navegación, elige Escalamiento automático y, a continuación, Grupos de escalamiento automático.
-
En el cuadro de búsqueda, introduce el nombre de tu entorno de computación y, a continuación, selecciona tu entorno de computación.
Nota: Amazon EC2 puede crear más de un grupo de escalamiento automático para el mismo entorno de computación. -
Para cada grupo de escalamiento automático, elige la pestaña Actividad y, a continuación, busca problemas de bloqueo en la sección Historial de actividades.
Nota: La columna Estado muestra No se ha realizado correctamente cuando hay problemas que hacen que las instancias no se inicien.
Por ejemplo, si tu cuenta alcanza el número máximo de instancias, es posible que Amazon EC2 devuelva un mensaje similar al siguiente:
«Launching a new EC2 instance. Status Reason: Your quota allows for 0 more running instance(s). You requested at least 1. Launching EC2 instance failed."
El evento incluye una marca temporal en UTC que corresponde al momento en que enviaste el trabajo:At 2018-09-03T05:54:30Z a user request update of AutoScalingGroup constraints to min: 0, max: 1, desired: 1 changing the desired capacity from 0 to 1.At 2018-09-03T05:54:52Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.Nota: AWS Batch solicita instancias en tu nombre. Si modificas los grupos de escalamiento automático manualmente, es posible que tu entorno de computación deje de ser válido. Para obtener más información sobre las cuotas de instancias y cómo solicitar un aumento de la cuota, consulta Cuotas de servicio de Amazon EC2.
Si el grupo de escalamiento automático solo muestra eventos correctos en Eventos recientes, completa los pasos de la sección Comprobación del rol de IAM de la instancia de contenedor.
Importante: Debes establecer los permisos para el rol de servicio AWSServiceRoleForAutoScaling de AWS Identity and Access Management (IAM). El rol de IAM AWSServiceRoleForAutoScaling debe tener acceso a la clave de AWS Key Management Service (AWS KMS) administrada por el cliente. Esto es necesario en entornos con imágenes de máquina de Amazon (AMI) personalizadas, volúmenes cifrados de Amazon Elastic Block Store (Amazon EBS) y claves de AWS KMS administradas por el cliente. Para obtener más información, consulta Secciones de la política de claves que permiten el acceso a la clave administrada por el cliente.
Entorno de computación de spot
Sigue estos pasos:
- Abre la consola de Amazon EC2.
- En el panel de navegación, elige Solicitudes de spot.
- Elige Tipo de solicitud y, a continuación, elige Tipo de solicitud = flota.
- Selecciona tu solicitud de spot.
- En Estado, elige Activo.
- Elige ** Descripción** y, a continuación, revisa el valor de la capacidad de objetivo total para determinar si se ha satisfecho la solicitud de instancia de spot. Si no hay ninguna instancia, consulta la vista Historial para determinar el motivo.
Por ejemplo, las solicitudes que no pueden alcanzar el precio de oferta devuelven un mensaje similar al siguiente:
«m4.large, ami-aff65ad2, Linux/UNIX (Amazon VPC), us-east-1a, Spot bid price is less than Spot market price $0.0324» - Elige un porcentaje de oferta adecuado para tu entorno de computación. Si cambias el precio de la oferta, asegúrate de crear un nuevo entorno de computación. Para obtener más información, consulta Visualización del historial de precios de instancias de spot.
Nota: AWS Batch crea solicitudes de flota de spot en tu nombre. No modifiques las solicitudes de flota de spot manualmente o tu entorno de computación podría dejar de ser válido.
Si en los eventos más recientes del grupo de escalamiento automático solo se muestran eventos correctos, completa los pasos de la siguiente sección.
Comprobación del rol de IAM de la instancia de contenedor
Sigue estos pasos:
- Abre la consola de AWS Batch.
- En el panel de navegación, elige Entornos y, a continuación, selecciona tu entorno de computación.
- En la pestaña Detalles, anota el nombre del rol de la instancia.
- Abre la consola de IAM.
- En el cuadro de búsqueda, introduce el nombre del rol de la instancia y, a continuación, selecciona tu rol de instancia.
- Selecciona la pestaña Permisos. En la sección Políticas de permisos, confirma que has adjuntado la política administrada AmazonEC2ContainerServiceforEC2Role. Si has adjuntado la política, continúa con el paso 11.
- Selecciona Agregar permisos y, a continuación, elige Adjuntar políticas.
- En la sección Otras políticas de permisos, escribe AmazonEC2ContainerServiceforEC2Role en el cuadro de búsqueda.
- Selecciona AmazonEC2ContainerServiceforEC2Role y, a continuación, elige Agregar permisos.
- Selecciona la pestaña Relaciones de confianza y, a continuación, selecciona Editar política de confianza.
- Confirma que la política de confianza contiene la siguiente instrucción:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- Si la política de confianza incluye la instrucción anterior, elige Cancelar. Si la política de confianza no incluye la instrucción anterior, agrégala a tu política. A continuación, selecciona Actualizar política.
Si tu instancia sigue sin unirse al clúster de Amazon ECS, completa los pasos de la siguiente sección.
Comprobación de la configuración de redes y seguridad del entorno de computación
Sigue estos pasos:
- Abre la consola de AWS Batch.
- En el panel de navegación, elige Entornos y, a continuación, selecciona tu entorno de computación.
- En la sección Recursos de computación, anota los valores de Subredes y Grupos de seguridad.
- Abre la consola de Amazon Virtual Private Cloud (Amazon VPC).
- En el panel de navegación, elige Subredes.
- Selecciona cada subred del entorno de computación y, a continuación, identifica los valores de Asignar automáticamente la dirección IPv4 pública en la pestaña Detalles.
Si el valor de Asignar automáticamente la dirección IPv4 pública es Sí, las instancias iniciadas en la subred tendrán estas propiedades:
Una dirección IPv4 pública
Una tabla de enrutamiento con un destino de enrutamiento de 0.0.0.0/0
Una puerta de enlace de Internet (por ejemplo: igw-1a2b3c4d) configurada como Objetivo
Si el valor de Asignar automáticamente la dirección IPv4 pública es No, las instancias iniciadas en la subred tendrán estas propiedades:
Una dirección IPv4 privada
Una tabla de enrutamiento con un destino de enrutamiento de 0.0.0.0/0
Una puerta de enlace de NAT (por ejemplo, nat-12345678901234567) configurada como Objetivo
Nota: Para obtener más información, consulta Enrutamiento. - En el panel de navegación, selecciona Grupos de seguridad.
- Para cada grupo de seguridad del entorno de computación, elige la pestaña Reglas de salida. A continuación, comprueba si existe una regla con la siguiente configuración:
En Tipo, elige Todo el tráfico.
En Protocolo, elige Todos.
En Rango de puertos, elige Todos.
En Destino, elige 0.0.0.0/0.
Importante: Si la regla no existe, elige Acciones y, a continuación, elige Editar reglas de salida. A continuación, crea la regla. Para obtener una regla más restrictiva respecto al tráfico de salida, elige HTTPS (443) en Tipo y 0.0.0.0/0 en Destino. - En el panel de navegación, selecciona ACL de la red.
- Selecciona la lista de control de acceso de la red (ACL de la red) de la VPC.
- En las pestañas **Reglas de entrada ** y Reglas de salida, confirma que la ACL de la red permite que todo el tráfico entre y salga de las subredes asociadas.
Importante: Si has modificado la ACL de la red, agrega una regla que permita el tráfico HTTPS IPv4 de salida de la subred a Internet. Para obtener más información, consulta Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad y Control del tráfico de la subred con listas de control de acceso a la red. Para cambiar la VPC, las subredes o los grupos de seguridad, crea un nuevo entorno de computación.
Si tu instancia aún no se ha unido al clúster de Amazon ECS, conéctate a ella. Comprueba el estado del daemon de Docker y del agente de contenedores de Amazon ECS. Para obtener más información, consulta ¿Cómo soluciono los problemas de un agente de Amazon ECS desconectado?
Nota: Para seguir solucionando problemas relacionados con un trabajo de AWS Batch que está bloqueado en el estado EJECUTABLE, utiliza AWS CloudTrail. Establece el atributo Username en aws-batch para buscar los errores que se producen durante las tareas programadas.
Información relacionada
Conexión a la instancia de Linux con SSH
Conexión a una instancia de Windows mediante RDP
Introducing new alerts to help users detect and react to blocked job queues in AWS Batch (Presentación de alertas nuevas para ayudar a los usuarios a detectar colas de trabajos bloqueados y reaccionar a ellas en AWS Batch)

Contenido relevante
preguntada hace un año
- Respuesta aceptada
preguntada hace un año
preguntada hace 3 meses
OFICIAL DE AWSActualizada hace 2 años
OFICIAL DE AWSActualizada hace 2 años