PostgreSQL

Come eliminare le connessioni inattive in PostgreSQL

Come eliminare le connessioni inattive in PostgreSQL

Il primo passo per apportare modifiche o leggere alcune informazioni da una banca dati PostgreSQL è stabilire connessioni. D'altra parte, ogni collegamento ha generato un sovraccarico utilizzando la procedura e la memorizzazione. Ecco perché un dispositivo con risorse minime (lettura, archiviazione, hardware) può supportare l'aggregato limitato di connessioni. Una volta che l'aggregato limitato è andato ben oltre un punto, dovrebbe continuare a lanciare errori o negare le connessioni. All'interno di PostgreSQL.conf, PostgreSQL sta facendo un buon lavoro nel limitare i collegamenti. In questo tutorial, esamineremo le diverse forme di stati che possono avere i collegamenti PostgreSQL. Ti mostreremo come determinare se il collegamento è attivo o è stato inattivo per un lungo periodo, nel caso in cui può essere disconnesso per liberare i collegamenti e le risorse.

Connetti al server:

All'inizio, assicurati di aver installato pgAdmin4 completamente funzionante sul tuo sistema informatico. Aprilo dalle tue applicazioni. Devi connetterlo con il localhost fornendo una password.

Dopo la connettività con root localhost, connettilo con il server PostgreSQL. Digita la password per l'utente PostgreSQL 13 "Postgres per connettersi". Tocca il pulsante OK per procedere.

Ora sei stato connesso al server PostgreSQL 13. Puoi vedere un elenco di database che risiedono nel server come presentato nell'immagine allegata di seguito. Il database di Postgres è il database predefinito' creato al momento dell'installazione di PostgreSQL, mentre il database di 'test' è stato creato da un utente dopo l'installazione.

Stati di connessione:

Se viene stabilito un collegamento PostgreSQL, può eseguire varie azioni che risultano in transizioni di stato. Dovrebbe essere presa una decisione razionale sul funzionamento del collegamento o se è stato lasciato inattivo/non utilizzato a seconda dello stato e della durata in ciascuno stato. È importante notare che fino a quando l'applicazione non chiude deliberatamente la connessione, continuerà a funzionare, sprecando risorse molto tempo dopo che il client è stato scollegato. Ci sono i 4 potenziali stati per una connessione:

Identificare gli stati di connessione:

Le tabelle del catalogo PostgreSQL forniscono una vista integrata 'pg_stat_activity' per controllare le statistiche su cosa fa un collegamento o quanto tempo è stato in questa condizione. Per controllare tutte le statistiche riguardanti ogni database e ogni stato di connessione, apri lo strumento di query ed esegui la seguente query:

>> SELECT * FROM pg_stat_activity;

La query è stata implementata in modo fruttuoso e la nota di realizzazione è stata mostrata.

Quando controlli i suoi dati Lato Output, troverai una tabella con diverse colonne, come mostrato di seguito. Puoi controllare gli stati delle connessioni controllando i valori del campo 'stato'.

Per semplificare l'output e avere un'idea chiara delle connessioni, dei loro stati, degli utenti e dei server su quegli stati, devi eseguire la query modificata di seguito nello strumento di query. Questa query mostra solo i 5 campi dei record per le connessioni e i dati particolari che li riguardano. La colonna 'pid' sta per process id. La colonna 'stato' contiene gli stati dei processi. La colonna 'usename' identifica l'utente che ha lavorato su quel particolare processo. La colonna 'datname' specificava il nome del database su cui è stata eseguita la transazione. La colonna 'datid' sta per database id.

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

L'output ha un totale di 8 processi registrati. La colonna 'stato' mostra che ci sono solo 3 processi funzionanti in questo momento. Uno è tenuto dal database predefinito 'Postgres e gli altri due sono tenuti dal database 'test'. Allo stesso tempo, "l'utente Postgres ha eseguito questi processi".

Identificare le connessioni inattive:

Lo "stato" sembra essere l'unico valore che stiamo cercando all'interno dei risultati sopra menzionati. Utilizzeremo queste informazioni per determinare quali processi o query si trovano in quali stati e in seguito scaveremo più a fondo. Possiamo snellire i dettagli che stiamo cercando affinando la query, permettendoci di predisporre un intervento su quella specifica connessione. Potremmo farlo scegliendo solo i PID inattivi usando la clausola WHERE e gli stati per quei PID. Dovremmo anche tenere traccia di quanto tempo il collegamento è rimasto inattivo e assicurarci di non avere collegamenti trascurati che sprecano le nostre risorse. Di conseguenza, utilizzeremo il comando riformulato di seguito per visualizzare solo i record relativi ai processi attualmente inattivi:

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

La query ha recuperato solo 2 record di dati in cui lo stato era "inattivo" utilizzando la clausola WHERE. Il risultato mostra i 2 processi inattivi con alcune informazioni che li riguardano.

Elimina una connessione inattiva:

Dopo l'identificazione delle connessioni inattive, ora è il momento di ucciderle. Una volta che abbiamo ridotto il processo in uno stato di attesa o inattivo per molto più tempo, potremmo usare il semplice comando per terminare facilmente il meccanismo di back-end senza interrompere le attività del server. Dobbiamo fornire il processo 'id' all'interno della query in una funzione di terminazione.

>> SELEZIONA pg_terminate_backend(7408);

Il processo è stato magnificamente ucciso.

Ora controlla le restanti connessioni inattive dalla query allegata di seguito.

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

L'output mostra solo 1 processo rimanente, che è inattivo.

Conclusione:

Assicurati di non perdere nessun passaggio per eliminare in modo efficiente le connessioni inattive dal database PostgreSQL.

Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...
OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...