Historie aktivních sezení v PostgreSQL – nové rozšíření pgsentinel

Společnost pgsentinel uvolnila stejnojmenné rozšíření pgsentinel (github repozitář), které přidává do PostgreSQL pohled pg_active_session_history — historii aktivních relací (podobně jako v oraklovém v$active_session_history).

V podstatě to jsou jen snímky z pg_stat_activity každou sekundu, ale jsou zde důležité aspekty:

  1. Veškeré shromážděné informace se uchovávají pouze v paměti a objem paměti, který se používá, se řídí počtem posledních uchovávaných záznamů.
  2. Bylo přidáno pole queryid — ten samý queryid z rozšíření pg_stat_statements (vyžaduje předchozí instalaci).
  3. Bylo přidáno pole top_level_query — text dotazu, ze kterého byl současný dotaz vyvolán (v případě použití pl/pgsql)


Úplný seznam polí pg_active_session_history:

      Column      |           Type           
------------------+--------------------------
 ash_time         | timestamp with time zone 
 datid            | oid                      
 datname          | text                     
 pid              | integer                  
 usesysid         | oid                      
 usename          | text                     
 application_name | text                     
 client_addr      | text                     
 client_hostname  | text                     
 client_port      | integer                  
 backend_start    | timestamp with time zone 
 xact_start       | timestamp with time zone 
 query_start      | timestamp with time zone 
 state_change     | timestamp with time zone 
 wait_event_type  | text                     
 wait_event       | text                     
 state            | text                     
 backend_xid      | xid                      
 backend_xmin     | xid                      
 top_level_query  | text                     
 query            | text                     
 queryid          | bigint                   
 backend_type     | text                     

Hotový balíček pro instalaci zatím není. Je navrženo stáhnout zdrojové kódy a sestavit knihovnu samostatně. Nejprve je třeba nainstalovat „devel“ balíček pro váš server a do proměnné PATH zapsat cestu k pg_config. Sestavujeme:

cd pgsentinel/src
make
make install

Přidáme parametry do postgres.conf:

shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all

# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000

Restartujeme PostgreSQL a vytváříme rozšíření:

create extension pgsentinel;

Nasbírané informace umožňují odpovědět na následující otázky:

  • Na jakých čekáních relací bylo stráveno nejvíce času?
  • Které relace byly nejaktivnější?
  • Které dotazy byly nejaktivnější?

Odpovědi na tyto otázky lze samozřejmě získat pomocí SQL dotazů, ale je pohodlnější to vidět jasně na grafu, když myší zvýrazňujete zajímavé časové intervaly. Můžete to provést pomocí bezplatného programu PASH-Viewer (sestavené binární soubory lze stáhnout v sekci Releases).

PASH-Viewer při spuštění (od verze 0.4.0) zkontroluje existenci zobrazení pg_active_session_history, a pokud existuje, načte z něj veškerou nahromaděnou historii a pokračuje ve čtení nově příchozích dat, aktualizujíc graf každých 15 sekund.

Historie aktivních sezení v PostgreSQL – nové rozšíření pgsentinel

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster