États des déclencheurs
Un déclencheur dans FlowForce Server peut se trouver dans l'un des deux états suivants :
•Fonctionnement normal : le déclencheur s'exécute comme prévu, sans tâche manquante.
•En retard : le déclencheur ne s'exécute pas à l'heure prévue en raison d'un manque de créneaux d'exécution (pour plus de détails, voir ci-dessous).
Déclencheurs en retard
Un déclencheur est considéré comme en retard lorsqu'il ne peut pas s'exécuter à l'heure prévue, car aucun créneau d'exécution n'est disponible. Lorsqu'un déclencheur est en retard, les exécutions manquées ne sont pas accumulées. Il attend plutôt le prochain créneau d'exécution disponible.
Comment différents déclencheurs gèrent les retards
Un déclencheur reste en attente jusqu'à ce qu'il puisse exécuter sa prochaine tâche principale. Le comportement varie en fonction du type de déclencheur.
Déclencheurs minuteur
Pour un déclencheur minuteur, la tâche principale consiste à s'exécuter à une heure programmée. Si cette heure est dépassée et qu'aucun créneau d'exécution n'est disponible pour exécuter la tâche, le déclencheur devient en retard. Le déclencheur ne tente pas de s'exécuter plusieurs fois, car cela aggraverait le problème. Au lieu de cela, le déclencheur attend qu'un créneau se libère.
Cependant, même lorsqu'un créneau devient disponible, le déclencheur peut ne pas l'obtenir immédiatement. Les tâches prioritaires (telles qu'une demande de service ou un déclencheur prioritaire) peuvent prendre le dessus. Si plusieurs déclencheurs de même priorité sont en attente, le système utilise des règles internes pour déterminer lequel obtient le créneau.
Déclencheurs de système de fichier
Pour un déclencheur de système de fichier, la tâche principale consiste à analyser un répertoire à la recherche de modifications. Le comportement des déclencheurs du système de fichier est identique à celui des minuteurs. Toutefois, un déclencheur du système de fichier peut avoir plusieurs éléments à traiter : lorsque le répertoire est analysé, le déclencheur peut trouver zéro, un ou plusieurs éléments à traiter.
•Si le déclencheur ne trouve aucun élément, le créneau d'exécution est immédiatement libéré et d'autres déclencheurs peuvent se disputer son utilisation.
•Si le déclencheur trouve un élément, le créneau est attribué au traitement de ce fichier.
•Si le déclencheur trouve plusieurs éléments, il ne les traite pas tous dans le même créneau, car cela serait inefficace. Au lieu de cela, le système crée plusieurs instances du déclencheur, chacune attendant son propre créneau d'exécution pour traiter un élément. Une fois qu'un élément est traité, l'instance correspondante est supprimée. Ce processus se poursuit jusqu'à ce qu'il ne reste plus qu'une seule instance, qui peut alors effectuer l'analyse suivante du répertoire.
Déclencheurs HTTP
Les déclencheurs HTTP surveillent les modifications apportées à une URL en vérifiant régulièrement ses en-têtes Last-Modified ou Content-MD5. À l'instar des autres déclencheurs, les déclencheurs HTTP peuvent être en retard dans certaines conditions :
•Si la récupération de la ressource prend plus de temps que l'intervalle de vérification configuré.
•Si aucun créneau d'exécution n'est disponible lorsque le déclencheur tente de s'exécuter.
Contrairement aux déclencheurs de système de fichier, les déclencheurs HTTP surveillent une seule URL (et non un répertoire entier) et ne se répliquent pas. Cependant, le comportement en cas de retard reste similaire : le déclencheur attend que les ressources soient libres et aucune vérification supplémentaire n'est mise en file d'attente pendant ce temps.
Exemple de scénario
Par exemple, si vous configurez un déclencheur de système de fichier pour analyser un répertoire toutes les 30 secondes, mais que les tâches qu'il déclenche prennent 10 minutes à s'exécuter, le déclencheur devient en retard dès que tous les emplacements d'exécution sont occupés. Cela se produit parce que le déclencheur ne peut pas réanalyser le répertoire à la recherche de nouveaux fichiers tant que tous les créneaux sont occupés. Même s'il pouvait détecter de nouveaux fichiers, il ne serait pas en mesure de les traiter immédiatement en raison du manque de créneaux disponibles.
Lorsque des créneaux se libèrent, le déclencheur reprend l'analyse, mais reste en retard, car il a manqué son heure d'analyse prévue. Ce comportement est intentionnel, car tenter de tout traiter immédiatement réduirait l'efficacité globale du système et augmenterait les délais.
Les déclencheurs en retard ne sont pas nécessairement le signe d'un problème ; ils indiquent que le système a manqué une tâche planifiée en raison de contraintes de ressources.
Solutions possibles
Si les déclencheurs sont trop souvent en retard, cela peut indiquer que le serveur est surchargé. Veuillez envisager les suggestions suivantes :
•Réduisez la fréquence d'analyse pour l'adapter à la durée des tâches : si une tâche prend 10 minutes, il n'est pas nécessaire d'effectuer une analyse toutes les 30 secondes. Vous devez donc augmenter l'intervalle d'analyse (par exemple, 5 minutes) afin de mieux l'aligner sur les délais d'exécution des tâches.
•Augmentez le nombre de créneaux d'exécution : si possible, allouez davantage de créneaux d'exécution afin de réduire les temps d'attente pour les déclencheurs.
•Ajustez la planification : espacez les déclencheurs afin qu'ils ne se déclenchent pas tous simultanément. Cela permettra de réduire la concurrence pour les créneaux.
•Optimisez la durée d'exécution des tâches : améliorez l'efficacité des tâches afin de libérer plus rapidement les créneaux.
•Mettez à niveau les ressources du serveur : ajoutez davantage de CPU, de mémoire ou de créneaux d'exécution pour gérer des charges de travail plus importantes.