Cette page décrit certains des problèmes et limites que vous pouvez rencontrer lors de l'utilisation de Cloud Tasks.
Ordre d'exécution
À l'exception des tâches planifiées pour une exécution ultérieure, les files d'attente de tâches sont totalement indépendantes de la plate-forme en termes d'ordre d'exécution. Il n'existe aucune garantie ni tentative d'optimisation pour exécuter des tâches dans un ordre particulier. Plus précisément, rien ne garantit que les anciennes tâches soient exécutées à moins qu'une file d'attente ne soit complètement vidée. Il existe un certain nombre de cas courants dans lesquels les tâches les plus récentes sont exécutées plus tôt que les tâches les plus anciennes, et les modèles correspondants peuvent changer sans préavis.
Exécution en double
Cloud Tasks vise une sémantique stricte de type "exécution exactement une fois". Toutefois, lorsqu'il est nécessaire de trouver un compromis et en double, le service privilégie les systèmes garantis l'exécution. Ainsi, un nombre d'exécutions en double supérieur à zéro se produit. Les développeurs doivent prendre des mesures pour s'assurer que l'exécution en double n'est pas un événement catastrophique. En production, plus de 99,999% des tâches ne sont exécutées que une seule fois.
Limites des ressources
La source la plus courante de mise en attente de tâches dans les files d'attente de traitement immédiat est l'épuisement des ressources sur les instances cibles. Si un utilisateur tente d'exécuter 100 tâches par seconde sur des instances frontend ne pouvant traiter que 10 requêtes par seconde, une mise en attente de tâches est créée. Cela se manifeste généralement de deux manières qui peuvent toutes deux être résolues en augmentant le nombre d'instances traitant les requêtes.
Erreurs liées à l'intervalle entre les tentatives et taux appliqués
Les serveurs surchargés peuvent commencer à renvoyer des erreurs d'intervalle entre les tentatives: HTTP 503
(pour les cibles App Engine), ou HTTP 429
ou 5xx
(pour les cibles externes).
Cloud Tasks réagit à ces erreurs en ralentissant l'exécution jusqu'à
s'arrête. Cette limitation du système empêche le nœud de calcul de surcharger. Notez que les paramètres spécifiés par l'utilisateur ne sont pas modifiés.
Le système de limitation se produit dans les cas suivants :
Cloud Tasks effectue une sauvegarde pour toutes les erreurs. En règle générale, le délai d'inactivité spécifié dans
rate limits
est utilisé. Toutefois, si le worker renvoie HTTP429 Too Many Requests
,503 Service Unavailable
ou si le taux d'erreurs est élevé, Cloud Tasks utilise un taux de délai avant réessai plus élevé. La nouvelle tentative spécifiée dans le protocole HTTPRetry-After
de réponse est pris en compte.Pour éviter les pics de trafic et atténuer les augmentations soudaines du trafic, les déploiements augmentent lentement lorsque la file d'attente est nouvellement créée ou inactive, et si elle est volumineuse de tâches deviennent soudainement disponibles à être distribuées (en raison des pics d'activité les taux de tâches, la file d'attente en cours de réactivation ou les nombreuses tâches planifiées en même temps).
Pics de latence et nombre maximal de tâches simultanées
Les serveurs surchargés peuvent également réagir en augmentant fortement la latence.
Dans cette situation, les requêtes restent ouvertes plus longtemps. Étant donné que les files d'attente s'exécutent avec un nombre maximal de tâches simultanées, elles peuvent ne pas être en mesure d'exécuter les tâches au débit prévu. Augmenter le nombre max_concurrent_tasks
pour les files d'attente affectées peut être utile dans les cas où la valeur définie initialement était trop faible, ce qui entraîne une limite de débit artificielle. Cependant, l'augmentation de max_concurrent_tasks
ne soulagera probablement pas la pression des ressources sous-jacentes.
Augmenter les problèmes de tâches de longue durée
Les files d'attente Cloud Tasks augmentent en partie leur sortie en fonction du nombre de tâches envoyées précédemment. Si le gestionnaire de tâches prend beaucoup de temps (de l'ordre de quelques minutes) pour terminer une tâche et renvoyer une réponse positive, il peut y avoir un décalage dans le taux d'augmentation de la file d'attente.
Afficher plus de 5 000 tâches
Si vous avez plus de 5 000 tâches, certaines ne sont pas visibles dans le console Google Cloud. Utilisez la gcloud CLI pour afficher toutes les tâches.