De geschiedenis van actieve sessies in PostgreSQL - een nieuwe uitbreiding pgsentinel.

Het bedrijf pgsentinel heeft de gelijknamige uitbreiding pgsentinel uitgebracht (github-repository), die aan PostgreSQL de weergave pg_active_session_history toevoegt — de geschiedenis van actieve sessies (vergelijkbaar met de Oracle v$active_session_history).

In wezen zijn dit gewoon momentopnamen van pg_stat_activity elke seconde, maar er zijn belangrijke punten:

  1. Alle verzamelde informatie wordt alleen in het RAM-geheugen opgeslagen, en de hoeveelheid gebruikte geheugen wordt geregeld door het aantal laatst opgeslagen records.
  2. Er wordt een veld queryid toegevoegd — diezelfde queryid van de uitbreiding pg_stat_statements (voorafgaande installatie vereist).
  3. Er wordt een veld top_level_query toegevoegd — de tekst van de query die de huidige query heeft aangeroepen (in het geval van gebruik van pl/pgsql)


Volledige lijst van velden pg_active_session_history:

      Kolom        |           Type           
------------------+--------------------------
 ash_time         | timestamp met tijdzone 
 datid            | oid                      
 datname          | tekst                    
 pid              | integer                  
 usesysid         | oid                      
 usename          | tekst                    
 application_name | tekst                    
 client_addr      | tekst                    
 client_hostname  | tekst                    
 client_port      | integer                  
 backend_start    | timestamp met tijdzone 
 xact_start       | timestamp met tijdzone 
 query_start      | timestamp met tijdzone 
 state_change     | timestamp met tijdzone 
 wait_event_type  | tekst                    
 wait_event       | tekst                    
 state            | tekst                    
 backend_xid      | xid                      
 backend_xmin     | xid                      
 top_level_query  | tekst                    
 query            | tekst                    
 queryid          | bigint                   
 backend_type     | tekst                     

Er is momenteel geen kant-en-klaar installatiepakket beschikbaar. Het wordt aanbevolen om de bronbestanden te downloaden en de bibliotheek zelf samen te stellen. Van tevoren moet het 'devel'-pakket voor uw server worden geïnstalleerd en moet het pad naar pg_config in de PATH-variabele worden toegevoegd. Samenstellen:

cd pgsentinel/src
make
make install

Voeg parameters toe in postgres.conf:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = all

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

Herstart PostgreSQL en maak de uitbreiding aan:

create extension pgsentinel;

De verzamelde informatie stelt u in staat om de volgende vragen te beantwoorden:

  • Op welke wachtperioden hebben sessies de meeste tijd doorgebracht?
  • Welke sessies waren het meest actief?
  • Welke queries waren het meest actief?

U kunt antwoorden op deze vragen krijgen door middel van SQL-queries, maar het is gemakkelijker om dit visueel weer te geven met een grafiek, waarbij u met de muis de gewenste tijdintervallen kunt selecteren. U kunt dit doen met behulp van het gratis programma PASH-Viewer (de verzamelde binaries kunnen worden gedownload in de sectie Releases).

Bij het starten van PASH-Viewer (vanaf versie 0.4.0) controleert het of de weergave pg_active_session_history aanwezig is. Als dit het geval is, laadt het alle opgeslagen geschiedenis en blijft het nieuwe gegevens lezen, waarbij de grafiek om de 15 seconden wordt bijgewerkt.

De geschiedenis van actieve sessies in PostgreSQL - een nieuwe uitbreiding pgsentinel.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster