PostgreSQL

Jak zabít nečinná připojení v PostgreSQL

Jak zabít nečinná připojení v PostgreSQL

Prvním krokem při provádění změn nebo čtení některých informací z databáze PostgreSQL je navázání připojení. Na druhou stranu každý odkaz generoval režii s využitím postupu a úložiště. Proto může zařízení s minimálními prostředky (čtení, úložiště, hardware) podporovat omezený agregát připojení. Jakmile se omezený agregát dostal daleko za bod, měl by pokračovat v házení chyb nebo odepření připojení. V rámci PostgreSQL.conf, PostgreSQL dělá slušnou práci při omezování odkazů. V tomto kurzu se podíváme na různé formy stavů, které mohou mít odkazy PostgreSQL. Ukážeme vám, jak zjistit, zda je odkaz aktivní nebo byl delší dobu neaktivní, v takovém případě jej lze odpojit a uvolnit tak odkazy a zdroje.

Připojit k serveru:

Na začátku se ujistěte, že máte v počítači plně nainstalovaný program pgAdmin4. Otevřete jej ze svých aplikací. Musíte jej připojit k localhost zadáním hesla.

Po připojení k root localhost jej připojte k serveru PostgreSQL. Zadejte heslo pro připojení uživatele PostgreSQL 13 'Postgres. Pokračujte klepnutím na tlačítko OK.

Nyní jste byli připojeni k serveru PostgreSQL 13. Můžete vidět seznam databází umístěných na serveru, jak je znázorněno na obrázku připojeném níže. Databáze Postgresu je výchozí databáze „vytvořená v době instalace PostgreSQL, zatímco„ testovací “databáze byla vytvořena uživatelem po instalaci.

Stavy připojení:

Pokud je vytvořen odkaz PostgreSQL, může provádět různé akce, jejichž výsledkem jsou stavové přechody. Mělo by být přijato racionální rozhodnutí o tom, zda odkaz funguje, nebo byl ponechán nečinný / nepoužívaný v závislosti na stavu a délce trvání v každém stavu. Je důležité si uvědomit, že dokud aplikace záměrně neuzavře připojení, bude udržovat provoz a plýtvání prostředky dlouho po odpojení klienta. Existují 4 potenciální stavy připojení:

Určete stavy připojení:

Tabulky katalogu PostgreSQL poskytují vestavěné zobrazení 'pg_stat_activity' ke kontrole statistik o tom, co odkaz dělá nebo kolik času to bylo v tomto stavu. Chcete-li zkontrolovat všechny statistiky týkající se každé databáze a každého stavu připojení, otevřete dotazovací nástroj a proveďte následující dotaz:

>> SELECT * FROM pg_stat_activity;

Dotaz byl implementován plodně a byla zobrazena poznámka o úspěchu.

Když zkontrolujete jeho výstupní stranu dat, najdete tabulku s několika sloupci, jak je znázorněno níže. Stavy připojení můžete zkontrolovat kontrolou hodnot v poli 'state'.

Chcete-li zjednodušit výstup a mít jasnou představu o připojeních, jejich stavech, uživatelích a serverech v těchto stavech, musíte v dotazovacím nástroji provést níže upravený dotaz. Tento dotaz zobrazuje pouze 5 polí záznamů pro připojení a konkrétní data, která se jich týkají. Sloupec „pid“ znamená id procesu. Sloupec „stát“ obsahuje stavy procesů. Sloupec „usename“ označuje uživatele, který pracoval na konkrétním procesu. Sloupec 'datname' specifikoval název databáze, na které se transakce provádí. Sloupec 'datid' znamená id databáze.

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

Na výstupu je zaznamenáno celkem 8 procesů. Sloupec „stav“ ukazuje, že právě teď fungují pouze 3 procesy. Jeden je držen ve výchozí databázi 'Postgres a další dva jsou drženy v databázi' test '. Zároveň uživatel 'Postgres tyto procesy provádí.

Určete nečinná připojení:

„Stav“ se zdá být jedinou hodnotou, kterou hledáme ve výše uvedených výsledcích. Tyto informace použijeme k určení, které procesy nebo dotazy jsou ve kterých stavech, a poté se ponoříme hlouběji. Můžeme zúžit podrobnosti, které hledáme, vylepšením dotazu, což nám umožní připravit zásah na tomto konkrétním připojení. Mohli bychom to udělat výběrem pouze nečinných PID pomocí klauzule WHERE a stavů pro tyto PID. Měli bychom také sledovat, jak dlouho byl odkaz neaktivní, a zajistit, abychom neměli žádné zanedbané odkazy promrhávající naše zdroje. Ve výsledku budeme pomocí níže přeformulovaného příkazu zobrazovat pouze záznamy relevantní pro procesy, které jsou aktuálně nečinné:

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

Dotaz načetl pouze 2 záznamy dat, kde byl stav „nečinný“ pomocí klauzule WHERE. Výsledkem jsou 2 nečinné procesy s určitými informacemi, které se jich týkají.

Kill an Idle Connection:

Po identifikaci nečinných připojení je nyní čas je zabít. Jakmile jsme proces zredukovali buď ve stavu pozastavení, nebo neaktivní na mnohem delší dobu, mohli bychom pomocí jednoduchého příkazu snadno ukončit back-end mechanismus bez narušení činnosti serveru. Musíme poskytnout proces „id“ v rámci dotazu ve funkci ukončení.

>> SELECT pg_terminate_backend (7408);

Proces byl skvěle zabit.

Nyní zkontrolujte zbývající nečinná připojení z níže připojeného dotazu.

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

Výstup zobrazuje pouze 1 zbývající proces, který je nečinný.

Závěr:

Nenechte si ujít žádný krok k účinnému zabíjení neaktivních připojení z databáze PostgreSQL.

Hry SuperTuxKart pro Linux
SuperTuxKart pro Linux
SuperTuxKart je skvělý titul navržený tak, aby vám ve vašem systému Linux přinesl zážitek Mario Kart zdarma. Je to docela náročné a zábavné hrát, je n...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
The Battle for Wesnoth je jednou z nejpopulárnějších strategických her s otevřeným zdrojovým kódem, které si v tuto chvíli můžete zahrát. Tato hra se ...
Hry 0 A.D. Tutorial
0 A.D. Tutorial
Z mnoha strategických her venku je 0 A.D. dokáže vyniknout jako komplexní titul a velmi hluboká, taktická hra, přestože je otevřeným zdrojem. Vývoj hr...