Historik over aktive sessioner i PostgreSQL — en ny udvidelse, pgsentinel.

Virksomheden pgsentinel udgav en tilsvarende udvidelse pgsentinel (github-repositoriet), som tilføjer visningen pg_active_session_history til PostgreSQL — historik over aktive sessioner (på samme måde som Oracle's v$active_session_history).

I bund og grund er det blot sekvensfotos fra pg_stat_activity, men der er vigtige detaljer:

  1. Al den indsamlede information opbevares kun i RAM, og den forbrugte hukommelsesmængde reguleres af antallet af de seneste gemte poster.
  2. Et felt queryid tilføjes — den samme queryid fra udvidelsen pg_stat_statements (kræver installation på forhånd).
  3. Et felt top_level_query tilføjes — teksten fra forespørgslen, der kaldte den aktuelle forespørgsel (i tilfælde af brug af pl/pgsql)


Den komplette liste over felter i pg_active_session_history:

      Kolonne      |           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                     

Der er endnu ikke en færdig pakke til installation. Det anbefales at downloade kilden og samle biblioteket selv. Først skal du installere "devel"-pakken til din server og tilføje stien til pg_config i variablen PATH. Vi samler:

cd pgsentinel/src
make
make install

Tilføj parametre til postgres.conf:

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

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

Genstart PostgreSQL og opret udvidelsen:

create extension pgsentinel;

Den indsamlede information gør det muligt at besvare spørgsmål som:

  • Hvor lang tid har sessionerne brugt på de største ventepunkter?
  • Hvilke sessioner har været mest aktive?
  • Hvilke forespørgsler har været mest aktive?

Det er klart, at man kan få svar på disse spørgsmål med SQL-forespørgsler, men det er lettere at se det visuelt på et diagram ved at markere de interessante tidsintervaller med musen. Du kan gøre dette ved hjælp af det gratis program PASH-Viewer (de samlede binære filer kan downloades under Releases).

Ved opstart af PASH-Viewer (fra version 0.4.0) kontrolleres der for tilstedeværelsen af visningen pg_active_session_history, og hvis den er der, indlæses al den akkumulerede historie fra den og fortsætter med at læse nye indkommende data, opdaterer grafen hvert 15. sekund.

Historik over aktive sessioner i PostgreSQL — en ny udvidelse, pgsentinel.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster