Projet

Général

Profil

Development #85622

Optimiser l'exécution des global action timeout

Ajouté par Pierre Ducroquet il y a 4 mois. Mis à jour il y a 4 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
13 janvier 2024
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Les global action timeout semblent largement responsables de la consommation massive de bande passante sur la production, au point d'avoir commencé à avoir des effets notables sur les utilisateurs. Le fonctionnement actuel est en effet problématique, et se ressent particulièrement sur les gros clients.
Sur le plus important de ces derniers, nous avons deux workflows avec un global action timeout sur les requêtes en état finalisé avec X jours de délai. Or, le fonctionnement actuel aujourd'hui est catastrophique dans ce cas : au lieu de traduire en SQL ce critère, l'intégralité des données est téléchargé et testé côté python. Cela conduit donc au téléchargement, pour ce seul client, de plus de 30GB de données toutes les 30 minutes. Ce fonctionnement ne peut tenir dans la durée.
J'ai d'ores et déjà préparé un patch qui sépare l'exécution des triggers sur l'état finalisé des autres triggers. Cela permettra de régler les pires cas présents actuellement, avant d'éventuelles autres optimisations que nous pourrons identifier par les logs de cron une fois ce premier lot passé.


Demandes liées

Lié à w.c.s. - Development #85692: Optimiser l'exécution des global action timeout - cas de 1st_arrivalFermé15 janvier 2024

Actions

Révisions associées

Révision 6cb2f0af (diff)
Ajouté par Pierre Ducroquet il y a 4 mois

global actions timeout: use SQL for finalized triggers (#85622)

Historique

#2

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de Nouveau à Solution proposée
  • Assigné à mis à Pierre Ducroquet

Pierre Ducroquet (pducroquet) a ouvert une pull request sur Gitea concernant cette demande :

#3

Mis à jour par Pierre Ducroquet il y a 4 mois

Les requêtes SQL générées, sur les plus gros workflows, tournent en moins de 200ms et restent optimisables par l'ajout d'index.
La traduction du critère «première transition dans l'état donné» est fait par un EXISTS sur la table evolutions, l'ordre n'ayant finalement pas d'importance, et cela évite donc les constructions SQL les plus complexes.

#4

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de Solution proposée à En cours

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#5

Mis à jour par Robot Gitea il y a 4 mois

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#7

Mis à jour par Robot Gitea il y a 4 mois

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#8

Mis à jour par Robot Gitea il y a 4 mois

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de En cours à Solution proposée
#10

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de Solution proposée à Solution validée

Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :

#11

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Pierre Ducroquet (pducroquet) a mergé une pull request sur Gitea concernant cette demande :

#12

Mis à jour par Transition automatique il y a 4 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#13

Mis à jour par Pierre Ducroquet il y a 3 mois

  • Lié à Development #85692: Optimiser l'exécution des global action timeout - cas de 1st_arrival ajouté
#14

Mis à jour par Transition automatique il y a environ un mois

Automatic expiration

Formats disponibles : Atom PDF