PostgreSQL

So beenden Sie inaktive Verbindungen in PostgreSQL

So beenden Sie inaktive Verbindungen in PostgreSQL

Der erste Schritt, um Änderungen vorzunehmen oder Informationen aus einer PostgreSQL-Datenbank zu lesen, besteht darin, Verbindungen herzustellen. Auf der anderen Seite erzeugte jeder Link Overhead unter Verwendung von Prozeduren und Speicher. Aus diesem Grund kann ein Gerät mit minimalen Ressourcen (Lesen, Speicher, Hardware) die begrenzte Anzahl von Verbindungen unterstützen. Sobald das begrenzte Aggregat einen Punkt weit überschritten hat, sollte es weiterhin Fehler schleudern oder Verbindungen verweigern. Innerhalb von PostgreSQL.conf, PostgreSQL leistet gute Arbeit beim Einschränken von Links. In diesem Tutorial sehen wir uns die verschiedenen Zustände an, die PostgreSQL-Links haben können. Wir zeigen Ihnen, wie Sie feststellen können, ob der Link aktiv ist oder für längere Zeit inaktiv war. In diesem Fall kann er getrennt werden, um die Links und Ressourcen freizugeben.

Verbinden zum Server:

Stellen Sie zu Beginn sicher, dass pgAdmin4 voll funktionsfähig auf Ihrem Computersystem installiert ist. Öffnen Sie es aus Ihren Anwendungen. Sie müssen es mit dem localhost verbinden, indem Sie ein Passwort angeben.

Verbinden Sie es nach der Verbindung mit root localhost mit dem PostgreSQL-Server. Geben Sie das Passwort für den PostgreSQL 13-Benutzer "Postgres to connect" ein. Tippen Sie auf die Schaltfläche OK, um fortzufahren.

Jetzt sind Sie mit dem PostgreSQL 13-Server verbunden. Sie können eine Liste der Datenbanken sehen, die sich auf dem Server befinden, wie in dem unten angehängten Bild dargestellt. Die Datenbank von Postgres ist die Standarddatenbank, die zum Zeitpunkt der PostgreSQL-Installation erstellt wurde, während die Testdatenbank von einem Benutzer nach der Installation erstellt wurde.

Verbindungsstatus:

Wenn ein PostgreSQL-Link hergestellt wird, kann er verschiedene Aktionen ausführen, die zu Zustandsübergängen führen. Es sollte eine rationale Entscheidung darüber getroffen werden, ob die Verbindung funktioniert oder ob sie je nach Zustand und Dauer in jedem Zustand inaktiv/unbenutzt ist. Es ist wichtig zu beachten, dass die Anwendung, bis die Anwendung die Verbindung absichtlich schließt, weiterarbeitet und Ressourcen verschwendet, noch lange nachdem der Client getrennt wurde. Es gibt die 4 möglichen Zustände für eine Verbindung:

Identifizieren Sie die Verbindungszustände:

Die PostgreSQL-Katalogtabellen bieten eine integrierte Ansicht 'pg_stat_activity', um Statistiken darüber zu überprüfen, was ein Link tut oder wie lange er in diesem Zustand war. Um alle Statistiken zu jeder Datenbank und jedem Verbindungsstatus zu überprüfen, öffnen Sie das Abfragetool und führen Sie die folgende Abfrage aus:

>> WÄHLEN * VON pg_stat_activity;

Die Abfrage wurde erfolgreich umgesetzt und die Leistungsnotiz wurde angezeigt.

Wenn Sie die Datenausgabeseite überprüfen, finden Sie eine Tabelle mit mehreren Spalten, wie unten gezeigt. Sie können den Status von Verbindungen überprüfen, indem Sie die Werte des Felds "state" überprüfen.

Um die Ausgabe zu vereinfachen und eine klare Vorstellung von Verbindungen, ihren Zuständen, den Benutzern und Servern auf diesen Zuständen zu haben, müssen Sie die unten modifizierte Abfrage im Abfragetool ausführen. Diese Abfrage zeigt nur die 5 Datensatzfelder für Verbindungen und bestimmte Daten dazu an. Die Spalte 'pid' steht für die Prozess-ID. Die Spalte 'state' enthält die Zustände von Prozessen. Die Spalte "usename" identifiziert den Benutzer, der an dem bestimmten Prozess gearbeitet hat. Die Spalte 'Datenname' gibt den Datenbanknamen an, auf dem die Transaktion ausgeführt wurde. Die Spalte 'datid' steht für die Datenbank-ID.

>> WÄHLEN Sie pid, state, usename datname, datid aus pg_stat_activity aus;

Die Ausgabe hat insgesamt 8 Prozesse aufgezeichnet. Die Spalte "Status" zeigt, dass derzeit nur 3 Prozesse funktionieren. Eine wird von der Standarddatenbank 'Postgres' gehalten und die anderen beiden werden von der Datenbank 'test' gehalten. Gleichzeitig hat der "Postgres-Benutzer diese Prozesse" durchgeführt.

Identifizieren Sie die Leerlaufverbindungen:

Der „Zustand“ scheint der einzige Wert zu sein, nach dem wir in den oben genannten Ergebnissen suchen. Wir werden diese Informationen verwenden, um festzustellen, welche Prozesse oder Abfragen sich in welchen Zuständen befinden, und danach tiefer graben. Wir können die Details, nach denen wir suchen, einschränken, indem wir die Abfrage verfeinern, sodass wir eine Intervention für diese bestimmte Verbindung vorbereiten können. Wir könnten dies tun, indem wir nur die Leerlauf-PIDs mit der WHERE-Klausel und die Zustände für diese PIDs auswählen. Wir sollten auch verfolgen, wie lange der Link inaktiv war und sicherstellen, dass keine vernachlässigten Links unsere Ressourcen verschwenden. Daher verwenden wir den unten umformulierten Befehl, um nur Datensätze anzuzeigen, die für die Prozesse relevant sind, die derzeit inaktiv sind:

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

Die Abfrage hat mit der WHERE-Klausel nur 2 Datensätze abgerufen, bei denen der Status 'inaktiv' war. Das Ergebnis zeigt die 2 Leerlaufprozesse mit bestimmten Informationen zu ihnen.

Beenden einer inaktiven Verbindung:

Nach der Identifizierung von inaktiven Verbindungen ist es jetzt an der Zeit, sie zu beenden. Sobald wir den Prozess entweder in einem Hold-Zustand oder länger inaktiv reduziert haben, könnten wir mit dem einfachen Befehl den Back-End-Mechanismus einfach beenden, ohne die Aktivitäten des Servers zu stören. Wir müssen den Prozess 'id' innerhalb der Abfrage in einer Beendigungsfunktion bereitstellen.

>> WÄHLEN Sie pg_terminate_backend(7408);

Der Prozess wurde großartig getötet.

Überprüfen Sie nun die verbleibenden freien Verbindungen aus der unten angehängten Abfrage.

>> SELECT datid, usename, datname, pid, state FROM pg_stat_activity WHERE state = 'idle';

Die Ausgabe zeigt nur 1 verbleibenden Prozess, der inaktiv ist.

Fazit:

Stellen Sie sicher, dass Sie keinen Schritt verpassen, um die inaktiven Verbindungen aus der PostgreSQL-Datenbank effizient zu beenden.

SuperTuxKart für Linux
SuperTuxKart ist ein großartiger Titel, der entwickelt wurde, um Ihnen das Mario Kart-Erlebnis kostenlos auf Ihrem Linux-System zu bieten. Es ist ziem...
Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...