Dépannage

Cette page vous explique comment résoudre les problèmes liés à Batch.

Si vous essayez de dépanner une tâche que vous n'avez pas un message d'erreur, vérifiez si l'historique du job contient les messages d'erreur en consultant les événements d'état ; avant de consulter ce document.

Pour en savoir plus sur le dépannage d'une tâche, consultez également documents:

Erreurs lors de la création d'offres d'emploi

Si vous ne parvenez pas à créer un job, cela peut être dû à l'une des erreurs présentées dans cette section.

Quota insuffisant

Problème

L'un des problèmes suivants se produit lorsque vous essayez de créer une tâche:

  • Lorsque le job se trouve dans État QUEUED, le problème suivant apparaît Champ statusEvents:

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    Ce problème indique que la tâche a été retardée en raison du utilisation actuelle (QUOTA_USAGE) et limite (QUOTA_LIMIT) d'un quota de QUOTA_NAME a empêché l'accès utilisation demandée (WANT_QUOTA).

  • Lorsque le poste est en cours États QUEUED, SCHEDULED ou FAILED, l'un des problèmes suivants Champ statusEvents:

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    Ce problème indique que la création d'une ressource a échoué, car a dépassé votre quota de QUOTA_NAME, ce qui est limité à QUOTA_LIMIT dans le à l'emplacement spécifié.

Solution

Pour identifier le problème, procédez comme suit :

  • Si la tâche a été retardée, essayez d'attendre qu'un quota supplémentaire soit libéré.

  • Si le job échoue en raison d'un quota insuffisant ou si ces retards persistent, essayez d'éviter un quota insuffisant en procédant de l'une des façons suivantes:

    • Créez des jobs qui utilisent une quantité inférieure de ce quota ou un quota différent. Par exemple, spécifiez un autre emplacement ou type de ressource autorisé pour ou répartir l'utilisation du quota entre plusieurs projets.

    • Demandez à Google Cloud une limite de quota plus élevée pour votre projet.

Pour en savoir plus, consultez Quotas et limites par lot Utiliser des quotas

Autorisations insuffisantes pour agir en tant que compte de service

Problème

Le problème suivant se produit lorsque vous essayez de créer une tâche:

  • Si le job n'utilise pas de modèle d'instance, le problème apparaît comme suit:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Si le job utilise un modèle d'instance, le problème apparaît comme suit:

    Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
    

Ce problème se produit généralement parce que l'utilisateur qui crée le job n'a pas des autorisations suffisantes pour agir en tant que compte de service utilisé par le job, qui est contrôlé par Autorisation iam.serviceAccounts.actAs.

Solution

Pour identifier le problème, procédez comme suit :

  1. Si le job utilise un modèle d'instance, vérifiez que le compte de service spécifié dans le modèle d'instance correspond au compte de service spécifié dans la définition du job.
  2. Assurez-vous que l'utilisateur qui crée le job a bien été autorisé Rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service spécifié pour la tâche. Pour en savoir plus, consultez Gérer l'accès
  3. Recréez le job.

Réseaux répétés

Problème

Le problème suivant se produit lorsque vous essayez de créer une tâche:

Networks must be distinct for NICs in the same InstanceTemplate

Ce problème est dû au fait que vous avez spécifié le réseau pour une tâche plusieurs fois.

Solution

Pour résoudre le problème, recréez le job et spécifiez le réseau à l'aide de la commande l'une des options suivantes:

Pour en savoir plus, consultez Spécifiez le réseau pour une tâche.

Réseau non valide pour VPC Service Controls

Problème

Le problème suivant se produit lorsque vous essayez de créer une tâche:

no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true

Solution

Ce problème survient lorsque vous essayez de créer et d'exécuter un job avec des VM disposant d'adresses IP externes appartenant à un périmètre de service VPC Service Controls.

Pour résoudre le problème, Créez une tâche qui bloque l'accès externe pour toutes les VM.

Pour en savoir plus sur la configuration de la mise en réseau pour un job dans un le périmètre de service VPC Service Controls, consultez la page Utiliser VPC Service Controls avec Batch.

Problèmes liés aux jobs et erreurs d'échec

Si vous rencontrez des problèmes avec un job qui ne s'exécute pas correctement ou qui a échoué pour raisons peu claires, cela peut être dû à l'une des erreurs de cette section. ou l'un des codes de sortie suivants : Section Codes de sortie en cas d'échec de la tâche.

Aucun journal dans Cloud Logging

Problème

Vous devez déboguer un job, mais aucun journal ne s'affiche pour celui-ci dans Cloud Logging.

Ce problème survient souvent pour les raisons suivantes:

  • L'API Cloud Logging n'est pas activée pour votre projet. Même si vous configurez correctement tout le reste pour les journaux d'un job, il ne produira pas de journaux si le service n'est pas activé pour votre projet.
  • Le compte de service du job n'est pas autorisé à écrire journaux. Une tâche ne peut pas générer de journaux sans autorisations suffisantes.
  • Le job n'a pas été configuré pour générer des journaux. Pour générer des journaux dans Cloud Logging, Cloud Logging doit être activé pour un job. Le poste les exécutables doivent également être configurés pour écrire toutes les informations que vous souhaitez apparaissent dans les journaux vers la sortie standard (stdout) et flux d'erreur standard (stderr). Pour en savoir plus, consultez Analyser une tâche à l'aide de journaux
  • Les tâches n'ont pas été exécutées. Les journaux ne peuvent pas être produits tant que les tâches n'ont pas été les ressources attribuées et démarrer l'exécution.
  • Cloud Logging a été configuré de manière à exclure automatiquement les journaux du job. Les journaux des jobs Batch ne peuvent pas s'afficher si vous avez configuré Filtres d'exclusion pour Cloud Logging entraînant l'exclusion des journaux des jobs Batch.

Solution

Pour résoudre ce problème, procédez comme suit :

  1. Assurez-vous que les journaux n'ont pas été automatiquement exclus de Cloud Logging en désactivant filtres d'exclusion pour Cloud Logging.
  2. Assurez-vous que l'API Cloud Logging est activée pour votre projet.
  3. Assurez-vous que le compte de service associé à la tâche dispose du rôle Rôle IAM Rédacteur de journaux (roles/logging.logWriter). Pour en savoir plus, consultez Activez Batch pour un projet.
  4. Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch. Les détails de l'offre peuvent vous aider à comprendre pourquoi l'emploi n'a pas été trouvé génèrent des journaux et peuvent fournir les informations dont vous espériez obtenir à partir des journaux. Par exemple:
    1. Pour vérifier que la journalisation est activée, consultez les Champ logsPolicy.
    2. Pour vérifier que l'exécution de la tâche s'est bien terminée, consultez les Champ status.

Après avoir apporté des modifications, recréez le job et attendez qu'il se termine avant de vérifier les journaux.

Aucun reporting d'agent de service

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un job qui ne s'exécute pas correctement ou qui a échoué avant la création des VM:

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

Le problème indique qu'aucune VM d'un job ne transmet de rapport au Agent de service Batch.

Ce problème survient souvent pour les raisons suivantes:

  • Les VM de la tâche ne disposent pas des autorisations nécessaires. Les VM d'un job nécessitent des autorisations spécifiques pour communiquer leur état au Agent de service Batch. Vous pouvez fournir ces autorisations pour les VM d'un job en accordant Rôle Responsable du signalement de l'agent Batch (roles/batch.agentReporter) au compte de service de la tâche.
  • Les VM de la tâche présentent des problèmes de réseau. Les VM d'un job nécessitent un réseau pour communiquer avec l'agent de service Batch.
  • Les VM du job utilisent une image d'OS de VM par lot obsolète ou utilisent une image d'OS de VM avec un logiciel d'agent de service Batch obsolète. Les VM du job nécessitent un logiciel dans leur image d'OS de VM qui fournit le les dépendances actuelles afin de communiquer Agent de service Batch.

Solution

Pour identifier le problème, procédez comme suit :

  1. Vérifier que les VM du job disposent des autorisations nécessaires pour signaler leur état à l'agent de service Batch.

    1. Pour identifier le compte de service du job, Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch. Si aucun compte de service n'est répertorié, le job utilise l'API Compute Engine le compte de service par défaut.
    2. Vérifiez que le compte de service du job dispose des autorisations nécessaires Rôle de responsable du signalement de l'agent Batch (roles/batch.agentReporter). Pour en savoir plus, consultez Gérer l'accès et Restreindre l'utilisation des comptes de service.

      Par exemple, pour accorder au de service Compute Engine par défaut les autorisations requises, exécutez la commande suivante:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      
  2. Vérifiez que les VM du job disposent d'un accès réseau approprié. Pour en savoir plus, consultez Présentation de la mise en réseau par lot Résolvez les problèmes réseau courants.

  3. Si vous avez spécifié l'image d'OS de VM pour le job, vérifiez que le L'image de l'OS de VM est actuellement compatible.

    1. Si vous avez activé Cloud Logging pour ce job, vous pouvez et identifiez ce problème en vérifiant les éléments suivants : journaux de l'agent (batch_agent_logs). Pour en savoir plus, consultez Analyser un job à l'aide des journaux

      • Journal pour l'erreur logicielle obsolète de l'agent de service Batch:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        BATCH_AGENT_VERSION est la version logicielle pour avec l'agent de service Batch (par exemple, cloud-batch-agent_20221103.00_p00).

      • Journal de l'erreur d'image d'OS de VM par lot obsolète:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        Le BATCH_VM_OS_IMAGE_NAME est la version spécifique d'un Image d'OS de VM de Batch utilisée par le job, par exemple batch-debian-11-20220909-00-p00.

    2. Vous pouvez résoudre ce problème en utilisant une image d'OS de VM plus récente. Si le job utilise une image personnalisée, recréez l'image personnalisée en fonction de la dernière version d'une image publique compatible.

      Pour en savoir plus, consultez la page Images d'OS de VM compatibles. et afficher les images d'OS des VM.

  4. Recréez le job.

Métriques sur les ressources manquantes dans Cloud Monitoring

Problème

Vous souhaitez Afficher les métriques sur les ressources d'une tâche mais il manque une partie ou la totalité des métriques attendues.

Ce problème survient souvent pour les raisons suivantes:

  • L'API n'a pas été activée pour votre projet. Même si vous configurez correctement tout le reste dans votre projet, les ressources Les métriques peuvent ne pas s'afficher tant que l'API Cloud Monitoring n'est pas activée. Pour l'agent Ops, vous devez également activer l'API Cloud Logging.
  • Vous ne disposez pas des autorisations nécessaires pour afficher les métriques. Vous ne pouvez pas consulter les métriques sans autorisations suffisantes.
  • Les VM du job ne se sont pas exécutées. Impossible de produire des métriques pour un job jusqu'à ce qu'au moins une des VM du job soit en cours d'exécution.
  • La configuration ou les autorisations du job n'étaient pas compatibles avec les métriques de l'agent Ops. Certaines métriques liées aux ressources ne peuvent être fournies que par l'agent Ops. Pour faciliter les opérations d'agent : un job doit répondre aux exigences de l'agent Ops, installer l'agent Ops et utiliser un compte de service capable d'écrire des métriques Surveillance.
  • Vous devez utiliser une autre méthode ou un autre filtre pour afficher les métriques. Certaines méthodes d'affichage des métriques n'affichent pas les métriques des VM après que celles-ci sont supprimés. En outre, les métriques ne s'affichent pas si elles sont omises par les filtres. ou la période affichée. De plus, les graphiques de métriques disposent qui peuvent rendre de petites quantités de données trop fines pour être affichées.
  • Les métriques ont été supprimées. Vous ne pouvez pas afficher les métriques après leur suppression. qui intervient automatiquement après la période de conservation périodes.

Solution

Si seules des métriques de l'agent Ops sont manquantes, essayez d'abord de résoudre le problème en procédant comme suit : suivantes:

  1. Vérifiez la configuration du job en procédant comme suit:
    1. Pour afficher toutes les informations de configuration du job, Affichez les détails de la tâche à l'aide de gcloud CLI ou de l'API Batch. Utiliser la sortie pour les étapes restantes.
    2. Assurez-vous que le compte de service du job dispose du rôle autorisations permettant d'écrire des métriques de l'agent Ops.
    3. Assurez-vous que le job respecte toutes les Conditions requises pour l'Agent Ops
    4. Assurez-vous que le job installe correctement l'agent Ops. Même s'il s'agit d'installer manuellement l'agent Ops dans un environnement exécutable, la méthode recommandée consiste à installer automatiquement l'agent Ops en paramétrant le Champ installOpsAgent à true.
  2. Si le problème persiste, consultez la page Résoudre les problèmes liés à l'agent Ops dans la documentation Google Cloud Observability.

Sinon, procédez comme suit pour résoudre le problème:

  1. Assurez-vous que l'API Monitoring est activée pour votre projet:

    Activer l'API

  2. Assurez-vous que les VM du job ont commencé à s'exécuter et que l'exécution est toujours dans la Surveiller les durées de conservation Vous pouvez consulter la durée d'exécution du job afficher les détails de la tâche.
  3. Vérifiez que les méthodes que vous utilisez pour l'affichage ne présentent aucun problème en procédant comme suit:
    1. À moins que vous ne souhaitiez afficher les métriques des ressources en cours d'exécution uniquement, assurez-vous que vous consultez les métriques à l'aide de l'Explorateur de métriques ou d'un créé à partir de graphiques de l'explorateur de métriques. D'autres méthodes, telles que que les tableaux de bord Compute Engine, qui ont été supprimées.
    2. Vérifiez que la propriété période de diffusion inclut la durée d'exécution du job. Pour les graphiques, assurez-vous également que le résolution du graphique est approprié pour vos données.
    3. Assurez-vous de n'avoir filtres qui masquent les données.
  4. Si le problème persiste, consultez la Résoudre les problèmes liés à Cloud Monitoring dans la documentation Google Cloud Observability.

Contrainte non respectée pour les adresses IP externes de VM

Problème

Le problème suivant apparaît dans le Champ statusEvents pour une tâche ayant échoué:

Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER.
Add instance VM_NAME to the constraint to use external IP with it.

Ce problème survient, car votre projet, dossier ou organisation a défini le Contrainte des règles d'administration compute.vmExternalIpAccess afin que seules les VM figurant sur la liste d'autorisation puissent utiliser des adresses IP externes.

Solution

Pour résoudre le problème, recréez le job et effectuez l'une des opérations suivantes:

Contrainte non respectée pour les images de confiance

Problème

Le problème suivant apparaît dans le Champ statusEvents pour une tâche ayant échoué:

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

Solution

Ce problème survient, car votre projet a défini Contrainte de règle relative aux images de confiance (compute.trustedImageProjects) afin que les images provenant de Batch, Les projets d'images batch-custom-image ne sont pas autorisés.

Pour résoudre le problème, effectuez au moins l'une des opérations suivantes:

  • Recréez le job pour spécifier une image d'OS de VM. qui est déjà autorisée par la contrainte de la règle des images de confiance.
  • Demandez à votre administrateur d'autoriser la modification du de règle relative aux images de confiance pour autoriser les images d'OS de VM à partir du Projet d'images batch-custom-image. Pour savoir comment procéder, consultez Contrôlez l'accès aux images d'OS de VM pour Batch.

Échec du job lors de l'utilisation d'un modèle d'instance

Problème

Le problème suivant apparaît dans le Champ statusEvents Pour une tâche en échec qui utilise un modèle d'instance:

INVALID_FIELD_VALUE,BACKEND_ERROR

Ce problème est dû à des problèmes peu clairs avec le modèle d'instance du job.

Solution

Pour déboguer le problème, procédez comme suit:

  1. Créer un MIG à l'aide du modèle d'instance et observez si des erreurs se produisent avec plus de détails.
  2. Facultatif: Pour essayer de trouver plus d'informations, consultez la opération de longue durée qui crée le MIG dans la console Google Cloud.

    Accéder à la page "Opérations Compute Engine"

Codes de sortie d'échec de la tâche

Lorsqu'une tâche spécifique d'une tâche échoue, la tâche renvoie une valeur différente de zéro code de sortie. Selon la configuration du Champ ignoreExitStatus, une tâche en échec peut entraîner l'échec d'une tâche.

En plus de tous les codes de sortie que vous définissez dans un exécutable, Batch inclut plusieurs codes de sortie réservés, y compris les les codes de sortie suivants.

Préemption de VM (50001)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

Ce problème se produit lorsqu'une VM Spot pour le job est préempté pendant l'exécution.

Solution

Pour résoudre le problème, effectuez l'une des opérations suivantes:

  • Relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.
  • Pour garantir l'absence de préemption, utilisez des VM avec le paramètre standard de provisionnement.

Délai avant expiration des rapports de la VM (50002)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.

Ce problème se produit lorsqu'un dépassement de délai dans le backend a entraîné VM de la tâche pour ne plus recevoir de mises à jour.

Solution

Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.

La VM a redémarré pendant l'exécution (50003)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.

Ce problème se produit lorsqu'une VM associée à un job redémarre de manière inattendue pendant l'exécution.

Solution

Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.

La VM et la tâche ne répondent pas (50004)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.

Ce problème se produit lorsqu'une tâche atteint la limite de temps sans réponse et ne peut pas être annulée.

Solution

Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.

La tâche s'exécute sur la durée d'exécution maximale (50005)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.

Ce problème survient dans les cas suivants:

  • La durée d'exécution d'une tâche dépasse la limite de temps spécifiée dans le Champ maxRunDuration
  • La durée d'exécution d'un exécutable dépasse la limite de temps spécifiée dans Champ timeout

Pour identifier précisément le délai qui a été dépassé, Afficher les journaux de la tâche et recherchez un journal qui mentionne le code de sortie 50005. Ce champ "textPayload" de ce journal indique où et quand la limite de temps a été dépassée.

Solution

Pour résoudre le problème, vérifiez la durée d'exécution totale requise la tâche ou l’exécutable qui a dépassé le délai imparti. Effectuez l'une des opérations suivantes :

  • Si vous ne vous attendez à recevoir cette erreur qu'occasionnellement, par exemple pour une tâche ou un exécutable avec une exécution incohérente, vous pouvez essayer de recréer le job et configurer pour automatiser les nouvelles tentatives pour essayer d'augmenter le taux de réussite.

  • Sinon, si la tâche ou l’exécutable a besoin de manière cohérente et intentionnelle plus de temps que le délai d'inactivité actuel permet d'exécuter l'exécution, Définissez un délai d'inactivité plus long.

VM recréée pendant l'exécution (50006)

Problème

Le problème suivant apparaît dans le Champ statusEvents pour un emploi:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.

Ce problème se produit lorsqu'une VM est recréée de manière inattendue pour un job pendant l'exécution.

Solution

Pour résoudre ce problème, relancez la tâche en utilisant de nouvelles tentatives automatisées ou réexécuter manuellement le job.

Étape suivante