PostgreSQL

Comment tuer les connexions inactives dans PostgreSQL

Comment tuer les connexions inactives dans PostgreSQL

La première étape pour apporter des modifications ou lire des informations à partir d'une banque de données PostgreSQL consiste à établir des connexions. D'autre part, chaque lien a généré un surdébit en utilisant la procédure et le stockage. C'est pourquoi un appareil avec des ressources minimales (lecture, stockage, matériel) peut prendre en charge l'agrégat limité de connexions. Une fois que l'agrégat limité a dépassé un certain point, il devrait continuer à lancer des erreurs ou à refuser des connexions. Dans PostgreSQL.conf, PostgreSQL fait un travail décent en limitant les liens. Dans ce tutoriel, nous examinerons les différentes formes d'états que les liens PostgreSQL peuvent avoir. Nous allons vous montrer comment déterminer si le lien est actif ou a été inactif pendant une longue durée, auquel cas il peut être déconnecté pour libérer les liens et les ressources.

Connecter au serveur:

Au début, assurez-vous que pgAdmin4 est entièrement fonctionnel installé sur votre système informatique. Ouvrez-le depuis vos applications. Vous devez le connecter avec le localhost en fournissant un mot de passe.

Après la connectivité avec root localhost, connectez-le avec le serveur PostgreSQL. Tapez le mot de passe de l'utilisateur PostgreSQL 13 'Postgres pour se connecter. Appuyez sur le bouton OK pour continuer.

Vous êtes maintenant connecté au serveur PostgreSQL 13. Vous pouvez voir une liste des bases de données résidant sur le serveur comme présenté dans l'image jointe ci-dessous. La base de données de Postgres est la base de données par défaut créée au moment de l'installation de PostgreSQL, tandis que la base de données "test" a été créée par un utilisateur après l'installation.

États de connexion :

Si un lien PostgreSQL est établi, il peut effectuer diverses actions qui entraînent des transitions d'état. Une décision rationnelle doit être prise quant à savoir si le lien fonctionne ou s'il a été laissé inactif/inutilisé en fonction de l'état et de la durée qu'il a été dans chaque état. Il est important de noter que jusqu'à ce que l'application ferme délibérément la connexion, elle continuera à fonctionner, gaspillant des ressources longtemps après le détachement du client. Il y a les 4 états potentiels pour une connexion :

Identifiez les états de connexion :

Les tables du catalogue PostgreSQL fournissent une vue intégrée 'pg_stat_activity' pour vérifier les statistiques sur ce qu'un lien fait ou combien de temps il a été dans cette condition. Pour vérifier toutes les statistiques concernant chaque base de données et chaque état de connexion, ouvrez l'outil de requête et exécutez la requête ci-dessous :

>> SELECT * FROM pg_stat_activity;

La requête a été mise en œuvre avec succès et la note de réalisation a été affichée.

Lorsque vous vérifiez ses données Côté sortie, vous trouverez un tableau avec plusieurs colonnes, comme indiqué ci-dessous. Vous pouvez vérifier les états des connexions en vérifiant les valeurs du champ 'state'.

Pour simplifier la sortie et avoir une idée claire des connexions, de leurs états, des utilisateurs et des serveurs sur ces états, vous devez exécuter la requête modifiée ci-dessous dans l'outil de requête. Cette requête ne montre que les 5 champs d'enregistrements pour les connexions et les données particulières les concernant. La colonne 'pid' correspond à l'identifiant du processus. La colonne 'state' contient les états des processus. La colonne 'username' identifie l'utilisateur qui a travaillé sur le processus particulier. La colonne 'datname' a spécifié le nom de la base de données sur laquelle la transaction s'est exécutée. La colonne 'datid' correspond à l'identifiant de la base de données.

>> SELECT pid, state, usename datname, datid, de pg_stat_activity ;

La sortie a un total de 8 processus enregistrés. La colonne « état » indique qu'il n'y a que 3 processus qui fonctionnent actuellement. L'un est détenu par la base de données par défaut 'Postgres et les deux autres sont détenus par la base de données 'test'. Dans le même temps, l'utilisateur de Postgres a effectué ces processus.

Identifiez les connexions inactives :

L'« état » semble être la seule valeur que nous recherchons dans les résultats mentionnés ci-dessus. Nous utiliserons ces informations pour déterminer quels processus ou requêtes sont dans quels états et ensuite creuser plus profondément. Nous pouvons réduire les détails que nous recherchons en affinant la requête, ce qui nous permet de préparer une intervention sur cette connexion spécifique. Nous pourrions le faire en choisissant uniquement les PID inactifs en utilisant la clause WHERE et les états de ces PID. Nous devons également garder une trace de la durée d'inactivité du lien et nous assurer qu'aucun lien négligé ne gaspille nos ressources. Par conséquent, nous utiliserons la commande reformulée ci-dessous pour afficher uniquement les enregistrements pertinents pour les processus actuellement inactifs :

>> SELECT pid, username, usesysid, datid, datname, application_name, backend_start, state_change, état FROM pg_stat_activity WHERE state = 'idle';

La requête n'a récupéré que 2 enregistrements de données où l'état était « inactif » à l'aide de la clause WHERE. Le résultat montre les 2 processus inactifs avec certaines informations les concernant.

Tuer une connexion inactive :

Après l'identification des connexions inactives, il est maintenant temps de les tuer. Une fois que nous avons réduit le processus en état d'attente ou inactif pendant beaucoup plus longtemps, nous pouvons utiliser la commande simple pour terminer facilement le mécanisme back-end sans perturber les activités du serveur. Nous devons fournir le processus 'id' dans la requête dans une fonction de terminaison.

>> SÉLECTIONNER pg_terminate_backend(7408) ;

Le processus a été magnifiquement tué.

Vérifiez maintenant les connexions inactives restantes à partir de la requête ci-dessous.

>> SELECT datid, nom d'utilisation, nom dat, pid, état FROM pg_stat_activity WHERE état = 'idle';

La sortie n'affiche qu'un seul processus restant, qui est inactif.

Conclusion:

Assurez-vous de ne manquer aucune étape pour tuer efficacement les connexions inactives de la base de données PostgreSQL.

Comment utiliser AutoKey pour automatiser les jeux Linux
AutoKey est un utilitaire d'automatisation de bureau pour Linux et X11, programmé en Python 3, GTK et Qt. En utilisant ses fonctionnalités de script e...
Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...