PostgreSQL

Cum să omoare conexiunile inactiv în PostgreSQL

Cum să omoare conexiunile inactiv în PostgreSQL

Primul pas în efectuarea modificărilor sau citirea unor informații dintr-o bază de date PostgreSQL este stabilirea conexiunilor. Pe de altă parte, fiecare legătură a generat overhead utilizând procedura și stocarea. De aceea, un dispozitiv cu resurse minime (citire, stocare, hardware) poate suporta agregatul limitat de conexiuni. Odată ce agregatul limitat a depășit cu mult un punct, ar trebui să continue să arunce erori sau să refuze conexiunile. În cadrul PostgreSQL.conf, PostgreSQL face o treabă decentă de a limita linkurile. În acest tutorial, vom analiza diferitele forme de stări pe care le pot avea legăturile PostgreSQL. Vă vom arăta cum să stabiliți dacă linkul este activ sau a fost inactiv pentru o lungă perioadă de timp, caz în care poate fi deconectat pentru a elibera linkurile și resursele.

Conectați-vă la server:

La început, asigurați-vă că pgAdmin4 a fost complet funcțional instalat pe sistemul computerului. Deschideți-l din aplicațiile dvs. Trebuie să-l conectați la localhost furnizând o parolă.

După conectivitatea cu root localhost, conectați-o la serverul PostgreSQL. Tastați parola pentru Postgres pentru utilizatorul PostgreSQL 13 pentru conectare. Apăsați pe butonul OK pentru a continua.

Acum ați fost conectat la serverul PostgreSQL 13. Puteți vedea o listă de baze de date care se află pe server așa cum este prezentată în imaginea anexată mai jos. Baza de date Postgres este baza de date implicită „creată în momentul instalării PostgreSQL, în timp ce baza de date„ test ”a fost creată de un utilizator după instalare.

Statele de conexiune:

Dacă este stabilită o legătură PostgreSQL, aceasta poate efectua diverse acțiuni care duc la tranziții de stare. Ar trebui luată o decizie rațională dacă legătura funcționează sau dacă a fost lăsată inactivă / neutilizată în funcție de stat și de durata în care a fost în fiecare stat. Este important de reținut că până când aplicația închide în mod deliberat conexiunea, aceasta va continua să funcționeze, irosind resurse mult timp după ce clientul este detașat. Există cele 4 stări potențiale pentru o conexiune:

Identificați statele conexiunii:

Tabelele de catalog PostgreSQL oferă o vizualizare încorporată „pg_stat_activity” pentru a verifica statisticile despre ceea ce face un link sau cât timp a fost în această condiție. Pentru a verifica toate statisticile referitoare la fiecare bază de date și la fiecare stare de conexiune, deschideți instrumentul de interogare și executați interogarea de mai jos:

>> SELECT * DIN pg_stat_activity;

Interogarea a fost implementată fructuos, iar nota de realizare a fost arătată.

Când îi verificați partea de ieșire a datelor, veți găsi un tabel cu mai multe coloane, așa cum se arată mai jos. Puteți verifica stările conexiunilor verificând valorile câmpului „stare”.

Pentru a simplifica ieșirea și a avea o idee clară a conexiunilor, a stărilor acestora, a utilizatorilor și a serverelor din aceste stări, trebuie să executați interogarea modificată mai jos în instrumentul de interogare. Această interogare afișează doar cele 5 câmpuri de înregistrări pentru conexiuni și date speciale referitoare la acestea. Coloana „pid” înseamnă codul procesului. Coloana „stare” deține stările proceselor. Coloana „nume de utilizator” identifică utilizatorul care a lucrat la procesul respectiv. Coloana „nume de date” a specificat numele bazei de date pe care s-a executat tranzacția. Coloana „datid” înseamnă codul bazei de date.

>> SELECT pid, stare, nume de utilizator nume de date, datid, din pg_stat_activity;

Ieșirea are un total de 8 procese înregistrate. Coloana „stare” arată că există doar 3 procese care funcționează în acest moment. Una este deținută de baza de date implicită „Postgres și celelalte două sunt deținute de baza de date„ test ”. În același timp, utilizatorul „Postgres a efectuat aceste procese.

Identificați conexiunile inactiv:

„Starea” pare a fi singura valoare pe care o căutăm în cadrul rezultatelor menționate mai sus. Vom folosi aceste informații pentru a determina ce procese sau interogări se află în ce stări și apoi săpăm mai adânc. Este posibil să reducem detaliile pe care le căutăm prin rafinarea interogării, permițându-ne să pregătim o intervenție cu privire la acea conexiune specifică. Am putea face acest lucru alegând doar PID-urile inactiv folosind clauza WHERE și stările pentru acele PID-uri. De asemenea, ar trebui să urmărim cât timp linkul a fost inactiv și să ne asigurăm că nu avem linkuri neglijate care ne risipesc resursele. Ca urmare, vom folosi comanda reformulată mai jos pentru a afișa numai înregistrări relevante pentru procesele care sunt în prezent inactive:

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

Interogarea a preluat doar 2 înregistrări de date în care starea era „inactivă” folosind clauza WHERE. Rezultatul este afișarea celor 2 procese inactive cu anumite informații referitoare la acestea.

Omoară o conexiune inactivă:

După identificarea conexiunilor inactive, acum este timpul să le ucizi. Odată ce am redus procesul, fie într-o stare de așteptare, fie inactivă pentru mai mult timp, am putea folosi comanda simplă pentru a termina cu ușurință mecanismul back-end fără a perturba activitățile serverului. Trebuie să furnizăm „id” procesului în cadrul interogării într-o funcție de terminare.

>> SELECT pg_terminate_backend (7408);

Procesul a fost magnific ucis.

Acum verificați conexiunile rămase inactiv din interogarea anexată mai jos.

>> SELECT date, nume de utilizator, nume de date, pid, stare DIN pg_stat_activity WHERE state = 'inactiv';

Ieșirea arată doar 1 proces rămas, care este inactiv.

Concluzie:

Asigurați-vă că nu ratați niciun pas pentru a elimina eficient conexiunile inactive din baza de date PostgreSQL.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...