Moniteur système : processus de travail, traces, verrous et sessions
Ce que fait la plateforme en ce moment, le travail de base de données en arrière-plan, les verrous qu'elle détient et qui est connecté — et comment arrêter tout cela.
Les processus de travail, les traces système et les verrous se trouvent dans Plateforme → Opérations → Intégrité, à côté des écrans d'intégrité de l'intégration, du pipeline et du flux de travail ; les sessions Web et utilisateur se trouvent dans Plateforme → Accès, à côté des utilisateurs. Chaque élément correspond à une autorisation distincte ; ainsi, un utilisateur ayant un rôle d'exploitation peut être autorisé à surveiller le système et à annuler une requête défaillante sans pour autant être autorisé à déconnecter tous les utilisateurs.
Processus de travail
Chaque requête traitée, chaque tâche en arrière-plan (planificateur, système d'envoi d'e-mails, exploration de processus, conservation des données, vérification des signatures électroniques, rapport de patrimoine) et chaque exécution par lots, sur chaque conteneur en cours d'exécution, est liée à la base de données qu'elle utilise à cet instant précis. En dessous, chaque connexion à la base de données affiche son état, les éléments en attente, la durée d'ouverture de ses requêtes et transactions, les processus qui la bloquent et la requête ou la tâche à l'origine du blocage.
- L'option Annuler interrompt l'exécution de la requête en cours ; celle-ci se termine alors par une erreur au lieu de rester en attente. Cochez plusieurs lignes et utilisez Annuler la sélection pour les interrompre simultanément.
- Lors d'un traitement par lots, l'option Annuler interrompt le traitement à l'élément suivant (aucun élément n'est abandonné à moitié terminé) et le traitement est enregistré comme annulé avec l'élément qu'il avait terminé.
- La commande End (côté base de données) ferme la connexion et annule la transaction. Utilisez-la pour une session inactive (« en cours de transaction ») qui détient des verrous, et que la commande Cancel ne peut pas atteindre car aucune opération n'est en cours.
- L'opération effectuée sur un autre conteneur est annulée par ce conteneur : elle prend dix secondes.
- Chaque annulation et fin de transaction demande une raison, qui est consignée dans le journal d'audit avec votre nom.
Traces système
La fonction Trace (sur n'importe quel processus ou backend) affiche l'intégralité du processus : chaque instruction exécutée, avec son temps d'exécution et le nombre de lignes renvoyées, les verrous détenus et en attente, la chaîne de sessions en cours, les sessions en attente et le plan d'exécution actuel lorsque celui-ci peut être affiché en toute sécurité. L'écran Traces système liste les opérations les plus lentes et les plus récentes, et, si la base de données dispose de pg_stat_statements, les instructions ayant consommé le plus de temps de traitement. Les valeurs saisies par les utilisateurs ne sont jamais enregistrées : elles contiennent des données personnelles.
Serrures
Les verrous en attente, les verrous bloquants, les verrous consultatifs (comme celui utilisé pour la migration de schéma) et les traitements par lots toujours en cours d'exécution sont considérés comme obsolètes. Un verrou est marqué comme obsolète lorsque la transaction qui le détient est restée inactive pendant plus de cinq minutes (par défaut), ou lorsqu'aucun conteneur en cours d'exécution ne prend en charge le traitement par lots. Dans ce dernier cas, un traitement dont le conteneur s'est arrêté ne se terminera jamais et sa planification ne reprendra pas tant qu'il n'aura pas été libéré.
- Sélectionnez toutes les transactions obsolètes, puis libérez la sélection. PostgreSQL ne libère un verrou que lorsque la session qui le détient se termine ; la libération met donc fin à cette session et annule sa transaction.
- Un verrou qui n'est PAS obsolète est refusé sauf si vous choisissez Forcer la libération — mettre fin à une transaction saine qui se trouve détenir un verrou à cet instant précis est le clic qui provoque l'incident qu'il était censé corriger.
- La libération d'un traitement par lots obsolète indique qu'il a échoué, permettant ainsi sa réexécution.
Sessions Web et utilisateur
Chaque session web (une par navigateur ou appareil) et chaque utilisateur connecté, avec son activité en cours. Basculez entre les modes « Par personne » et « Par session », filtrez par nom, adresse ou source, et déconnectez une session, toutes les sessions d'une personne, une sélection, ou tous les utilisateurs sauf vous. Les comptes de service apparaissent également ici, une session par jeton. Votre session personnelle n'est jamais fermée par une action groupée.
Dans l'écran Rôles, sous Plateforme : Processus de travail, les autorisations sont affichées pour surveiller, modifiées pour annuler et supprimées pour mettre fin à un processus. Les traces système sont affichées. Les verrous sont affichés pour surveiller et supprimés pour libérer. Les sessions Web et utilisateur sont affichées pour surveiller et supprimées pour déconnecter les utilisateurs. Un administrateur gère l'ensemble de ces autorisations. Dans un déploiement mutualisé, chaque locataire ne voit que ses propres processus et ses propres connexions à la base de données.