Cette page explique comment résoudre les causes courantes de jobs Dataflow par lot lentes ou bloquées.
Si votre job par lot est lent ou bloqué, utilisez l'onglet Détails de l'exécution pour accéder à davantage d'informations sur le job et identifier l'étape ou le nœud de calcul à l'origine du goulot d'étranglement.
Identifier la cause première
Vérifiez si la tâche rencontre des problèmes lors du démarrage du nœud de calcul. Pour en savoir plus, consultez Erreur lors de la synchronisation du pod.
Pour vérifier que le traitement des données a commencé, recherchez l'entrée de journal suivante dans le journal job-message :
All workers have finished the startup processes and began to receive work requests
Pour comparer les performances de différents jobs, assurez-vous que le volume de données d'entrée, la configuration des nœuds de calcul, le comportement de l'autoscaling et les paramètres Dataflow Shuffle sont identiques.
Consultez les journaux job-message pour identifier les problèmes tels que les limites de quota, les ruptures de stock ou l'épuisement des adresses IP.
Dans l'onglet Détails de l'exécution, comparez la progression des étapes pour identifier celles qui ont pris plus de temps.
Recherchez les soies restantes dans l'épi. Pour en savoir plus, consultez Résoudre les problèmes liés aux retardataires dans les jobs par lot.
Vérifiez les métriques de débit, d'utilisation du processeur et d'utilisation de la mémoire.
Recherchez les avertissements et les erreurs dans les journaux des nœuds de calcul.
- Si les journaux des nœuds de calcul contiennent des erreurs, affichez la trace de pile. Déterminez si l'erreur est due à un bug dans votre code.
- Recherchez les erreurs Dataflow. Consultez la page Résoudre les erreurs Dataflow.
- Recherchez les erreurs de mémoire insuffisante, qui peuvent bloquer un pipeline. Si vous rencontrez des erreurs de mémoire insuffisante, suivez les étapes décrites dans Résoudre les erreurs Dataflow de mémoire insuffisante.
- Pour identifier une étape lente ou bloquée, consultez les journaux des nœuds de calcul pour les messages
Operation ongoing
. Affichez la trace de la pile pour voir où l'étape passe du temps. Pour en savoir plus, consultez Traitement bloqué ou opération en cours.
Si vous n'utilisez pas Dataflow Shuffle, consultez les journaux du shuffler pour détecter les avertissements et les erreurs lors de l'opération de shuffle. Si vous voyez une erreur de dépassement du délai RPC sur le port 12345 ou 12346, il est possible qu'il manque une règle de pare-feu à votre tâche. Consultez Règles de pare-feu pour Dataflow.
Si l'exécuteur v2 est activé, recherchez les erreurs dans les journaux harness. Pour en savoir plus, consultez Résoudre les problèmes liés à l'exécuteur v2.
Identifier les retardataires
Un retardataire est un élément de travail lent par rapport aux autres éléments de travail de l'étape. Pour en savoir plus sur l'identification et la correction des retardataires, consultez la page Résoudre les problèmes de retardataires dans les jobs par lot.
Identifier les étapes lentes ou bloquées
Pour identifier les étapes lentes ou bloquées, utilisez la vue Progression des étapes. Les barres plus longues indiquent que l'étape prend plus de temps. Utilisez cette vue pour identifier les étapes les plus lentes de votre pipeline.
Une fois que vous avez trouvé l'étape goulot d'étranglement, vous pouvez effectuer les étapes suivantes :
- Identifiez le nœud de calcul retardataire dans cette étape.
- S'il n'y a pas de nœuds de calcul retardataires, identifiez l'étape la plus lente à l'aide du panneau Informations sur l'étape. Utilisez ces informations pour identifier les candidats à l'optimisation du code utilisateur.
- Pour identifier les goulots d'étranglement en parallèle, utilisez les métriques de surveillance Dataflow.
Identifier un nœud de calcul lent
Pour identifier un nœud de calcul lent pour une étape spécifique, utilisez la vue Progression du nœud de calcul. Cette vue indique si tous les nœuds de calcul traitent le travail jusqu'à la fin de l'étape ou si un seul nœud de calcul est bloqué sur une tâche retardataire. Si vous trouvez un nœud de calcul retardataire, procédez comme suit :
- Affichez les fichiers journaux de ce nœud de calcul. Pour en savoir plus, consultez la page Surveiller et afficher les journaux de pipeline.
- Affichez les métriques d'utilisation du processeur et la progression du nœud de calcul pour les nœuds de calcul retardataires. Si vous constatez une utilisation du processeur inhabituellement faible ou élevée, recherchez les problèmes suivants dans les fichiers journaux de ce nœud de calcul :
Outils de débogage
Lorsque votre pipeline est lent ou bloqué, les outils suivants peuvent vous aider à diagnostiquer le problème.
- Pour mettre en corrélation des incidents et identifier les goulots d'étranglement, utilisez Cloud Monitoring pour Dataflow.
- Pour surveiller les performances du pipeline, utilisez Cloud Profiler.
- Certaines transformations sont mieux adaptées que d'autres aux pipelines traitant de gros volumes. Les messages de journal peuvent identifier une transformation utilisateur bloquée dans des pipelines de traitement par lot ou par flux.
- Pour en savoir plus sur un job bloqué, utilisez les métriques de job Dataflow.
La liste suivante inclut des métriques utiles :
- La métrique Octets en attente (
backlog_bytes
) mesure la quantité d'entrées non traitées, exprimée en octets par étape. Utilisez cette métrique pour identifier une étape fusionnée qui n'a pas de débit. De même, la métrique d'éléments en attente (backlog_elements
) mesure le nombre d'éléments d'entrée non traités pour une étape. - La métrique Traiter des clés en parallèle (
processing_parallelism_keys
) mesure le nombre de clés de traitement en parallèle par étape spécifique du pipeline au cours des cinq dernières minutes. Utilisez cette métrique pour examiner les éléments suivants :- Filtrez le problème sur des étapes spécifiques et confirmez les avertissements de clé chaude, tels que
A hot key ... was detected
. - Identifiez les goulots d'étranglement de débit causés par un parallélisme insuffisant. Ces goulots d'étranglement peuvent ralentir les pipelines ou les bloquer.
- Filtrez le problème sur des étapes spécifiques et confirmez les avertissements de clé chaude, tels que
- La métrique Retard du système (
system_lag
) et la métrique de latence du système par étape (per_stage_system_lag
) mesurent la durée maximale de traitement ou d'attente de traitement d'un élément de données. Utilisez ces métriques pour identifier les étapes et les goulots d'étranglement inefficaces à partir de sources de données.
- La métrique Octets en attente (
Pour obtenir d'autres métriques qui ne sont pas incluses dans l'interface Web de surveillance Dataflow, consultez la liste complète des métriques Dataflow dans Métriques Google Cloud Platform.