PostgreSQL

Hvordan drepe inaktiv tilkoblinger i PostgreSQL

Hvordan drepe inaktiv tilkoblinger i PostgreSQL

Det første trinnet i å gjøre endringer eller lese informasjon fra en PostgreSQL-databank er å etablere forbindelser. På den annen side genererte hver lenke overhead ved hjelp av prosedyre og lagring. Derfor kan en enhet med minimale ressurser (lese, lagring, maskinvare) støtte det begrensede antallet tilkoblinger. Når det begrensede aggregatet har gått langt utover et punkt, bør det fortsette å kaste feil eller nekte forbindelser. Innen PostgreSQL.conf, PostgreSQL gjør en anstendig jobb med å begrense koblinger. I denne opplæringen vil vi se på de forskjellige former for tilstander som PostgreSQL-lenker kan ha. Vi viser deg hvordan du kan avgjøre om lenken er aktiv eller har vært inaktiv i lang varighet, i tilfelle den kan kobles fra for å frigjøre koblingene og ressursene.

Koble til server:

Først må du sørge for at pgAdmin4 har blitt fullt funksjonelt installert på datasystemet ditt. Åpne den fra applikasjonene dine. Du må koble den til localhost ved å oppgi passord.

Etter tilkoblingen med root localhost, kobler du den til PostgreSQL-serveren. Skriv inn passordet for PostgreSQL 13-brukerens Postgres for å koble til. Trykk på OK-knappen for å fortsette.

Nå har du blitt koblet til PostgreSQL 13-serveren. Du kan se en liste over databaser som ligger på serveren, som vist i bildet vedlagt nedenfor. Postgres database er standarddatabasen 'opprettet på tidspunktet for PostgreSQL installasjon, mens' test 'databasen er opprettet av en bruker etter installasjonen.

Tilkoblingstilstander:

Hvis det opprettes en PostgreSQL-kobling, kan den utføre forskjellige handlinger som resulterer i tilstandsoverganger. Det bør tas en rasjonell avgjørelse om koblingen fungerer eller om den har stått inaktiv / ubrukt, avhengig av tilstanden og varigheten den har vært i hver stat. Det er viktig å merke seg at inntil applikasjonen bevisst lukker forbindelsen, vil den fortsette å virke og kaste bort ressurser lenge etter at klienten er løsrevet. Det er de fire potensielle tilstandene for en forbindelse:

Identifiser tilkoblingsstatusene:

PostgreSQL katalogtabellene gir en innebygd visning 'pg_stat_activity' for å sjekke statistikk om hva en lenke gjør eller hvor lang tid det har vært i denne tilstanden. For å sjekke all statistikken angående hver database og alle tilkoblingstilstander, åpner du søkeverktøyet og utfører spørringen nedenfor:

>> VELG * FRA pg_stat_activity;

Søket er blitt implementert fruktbart, og resultatnotatet er vist.

Når du sjekker datautgangssiden, finner du en tabell med flere kolonner, som vist nedenfor. Du kan sjekke tilstandene til tilkoblinger ved å sjekke verdiene til feltet 'tilstand'.

For å forenkle utdataene og få en klar ide om tilkoblinger, deres tilstander, brukere og servere på disse statene, må du utføre spørringen nedenfor modifisert i søkeverktøyet. Denne spørringen viser bare de 5 feltene med poster for tilkoblinger og spesifikke data angående dem. Kolonnen 'pid' står for prosess-id. Kolonnen 'tilstand' inneholder tilstandene til prosesser. Kolonnen 'brukernavn' identifiserer brukeren som har jobbet med den spesifikke prosessen. Kolonnen 'datname' spesifiserte databasenavnet som transaksjonen ble utført på. Kolonnen 'datid' står for database-id.

>> VELG pid, tilstand, brukernavn datnavn, datid, fra pg_stat_activity;

Utgangen har totalt 8 prosesser registrert. Kolonnen 'tilstand' viser at det bare er tre prosesser som fungerer akkurat nå. Den ene holdes av standarddatabasen 'Postgres' og de andre to holdes av databasetesten '. Samtidig har 'Postgres-brukeren utført disse prosessene.

Identifiser ledige tilkoblinger:

"Staten" ser ut til å være den eneste verdien vi søker etter i resultatene nevnt ovenfor. Vi vil bruke denne informasjonen til å bestemme hvilke prosesser eller spørsmål som er i hvilke stater og deretter grave dypere. Vi kan redusere detaljene vi søker etter ved å finpusse søket, slik at vi kan forberede en intervensjon på den spesifikke forbindelsen. Vi kunne gjøre dette ved å velge bare ledige PID-er ved å bruke WHERE-klausulen og statene for disse PID-ene. Vi bør også holde rede på hvor lenge lenken har vært inaktiv og sørge for at vi ikke har forsømte lenker som sløser med ressursene våre. Som et resultat vil vi bruke kommandoen nedenfor omformulert til å bare vise poster som er relevante for prosessene som er inaktive:

>> VELG pid, brukernavn, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'inaktiv';

Spørringen har bare hentet to poster med data der staten var 'inaktiv' ved å bruke WHERE-setningen. Resultatet viser de to inaktive prosessene med viss informasjon om dem.

Drep en inaktiv tilkobling:

Etter identifisering av inaktive forbindelser, nå er det tid for å drepe dem. Når vi har redusert prosessen enten i ventetilstand eller inaktiv lenge, kan vi bruke den enkle kommandoen for å avslutte back-end-mekanismen uten å forstyrre serverens aktiviteter. Vi må gi prosessen 'id' i spørringen i en avslutningsfunksjon.

>> VELG pg_terminate_backend (7408);

Prosessen er fantastisk drept.

Sjekk nå de gjenværende inaktive tilkoblingene fra spørringen nedenfor.

>> VELG datid, brukernavn, datnavn, pid, tilstand FRA pg_stat_activity WHERE state = 'inaktiv';

Utgangen viser bare 1 gjenværende prosess, som er inaktiv.

Konklusjon:

Pass på at du ikke går glipp av noen trinn for å drepe de inaktive tilkoblingene fra PostgreSQL-databasen effektivt.

Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...
Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...