Povijest aktivnih sesija u PostgreSQL-u — novo proširenje pgsentinel

Tvrtka pgsentinel izdala istoimeno proširenje pgsentinel (github repozitorij), koje dodaje u PostgreSQL prikaz pg_active_session_history — povijest aktivnih sesija (slično oracleovom v$active_session_history).

U suštini, to su jednostavno snimke iz pg_stat_activity svake sekunde, ali postoje važni detalji:

  1. Sve prikupljene informacije čuvaju se samo u radnoj memoriji, a potrošnja memorije regulira se brojem poslednjih pohranjenih zapisa.
  2. Dodaje se polje queryid — upravo ono queryid iz proširenja pg_stat_statements (zahtijeva prethodnu instalaciju).
  3. Dodaje se polje top_level_query — tekst upita iz kojeg je pozvan trenutni upit (u slučaju korištenja pl/pgsql)


Potpuni popis polja 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                     

Spremni paket za instalaciju još nije dostupan. Preporučuje se preuzimanje izvornih kodova i samostalna izrada biblioteke. Prvo je potrebno instalirati „devel“ paket za svoj server i unijeti put do pg_config u varijablu PATH. Gradimo:

cd pgsentinel/src
make
make install

Dodajemo parametre u postgres.conf:

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

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

Ponovno pokrećemo PostgreSQL i kreiramo proširenje:

create extension pgsentinel;

Prikupljene informacije omogućuju odgovaranje na pitanja kao što su:

  • Na kojim su čekanjima sesije potrošile najviše vremena?
  • Koje su sesije bile najaktivnije?
  • Koji su upiti bili najaktivniji?

Odgovore na ova pitanja možete dobiti, naravno, SQL upitima, ali je lakše to vizualno prikazati na grafikonu, označavajući mišem zanimljive vremenske intervale. To možete učiniti pomoću besplatnog programa PASH-Viewer (preuzmite sakupljene binarne datoteke u odjeljku Izdavanja).

Prilikom pokretanja PASH-Viewera (od verzije 0.4.0) provjerava se postojanje prikaza pg_active_session_history, i ako on postoji, učitava se cijela prikupljena povijest te nastavlja s očitavanjem novih dolaznih podataka, ažurirajući graf svakih 15 sekundi.

Povijest aktivnih sesija u PostgreSQL-u — novo proširenje pgsentinel

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster