PostgreSQL actieve sessiegeschiedenis - nieuwe pgsentinel-extensie

vennootschap pgsentinel heeft de pgsentinel-extensie met dezelfde naam uitgebracht (github-repository), dat de weergave pg_active_session_history toevoegt aan PostgreSQL – de geschiedenis van actieve sessies (vergelijkbaar met Oracle’s v$active_session_history).

In wezen zijn dit eenvoudigweg snapshots van seconde tot seconde van pg_stat_activity, maar er zijn belangrijke punten:

  1. Alle verzamelde informatie wordt alleen in RAM opgeslagen en de verbruikte hoeveelheid geheugen wordt geregeld door het aantal laatst opgeslagen records.
  2. Het queryid-veld is toegevoegd - dezelfde queryid uit de pg_stat_statements-extensie (vooraf geïnstalleerde versie vereist).
  3. Het veld top_level_query is toegevoegd: de tekst van de query van waaruit de huidige query is aangeroepen (bij gebruik van pl/pgsql)


Volledige lijst met pg_active_session_history-velden:

      Kolom | Type -----------------+----------------------- ash_time | tijdstempel met tijdzone datid | oid datumnaam | tekstpid | geheel getal usesid | oid gebruikersnaam | tekst toepassingsnaam | tekst client_adr | tekst client_hostnaam | tekst client_poort | geheel getal backend_start | tijdstempel met tijdzone xact_start | tijdstempel met tijdzone query_start | tijdstempel met tijdzone state_change | tijdstempel met tijdzone wait_event_type | tekst wait_event | tekststatus | tekst backend_xid | xid backend_xmin | xid top_level_query | tekstquery | tekstqueryid | bigint backend_type | tekst                     

Er is nog geen kant-en-klaar pakket voor installatie. Er wordt voorgesteld om de bronnen te downloaden en de bibliotheek zelf samen te stellen. U moet eerst het “devel”-pakket voor uw server installeren en het pad instellen op pg_config in de PATH-variabele. We verzamelen:

cd pgsentinel/src
maken
make install

Voeg parameters toe aan postgres.conf:

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

# aantal recente records in het geheugen
pgsentinel_ash.max_entries = 10000

Start PostgreSQL opnieuw en maak een extensie:

maak extensie pgsentinel;

Met de verzamelde informatie kunnen we vragen beantwoorden zoals:

  • Aan welke wachtsessies heeft u de meeste tijd besteed?
  • Welke sessies waren het meest actief?
  • Welke verzoeken waren het meest actief?

U kunt natuurlijk antwoorden op deze vragen krijgen met behulp van SQL-query's, maar het is handiger om dit visueel in een grafiek te zien door de betreffende tijdsintervallen met de muis te markeren. Dit kun je doen met een gratis programma PASH-viewer (u kunt de verzamelde binaire bestanden downloaden in de sectie Releases).

Bij het starten controleert PASH-Viewer (vanaf versie 0.4.0) op de aanwezigheid van de weergave pg_active_session_history en als deze bestaat, laadt het de volledige verzamelde geschiedenis ervan en gaat door met het lezen van nieuwe binnenkomende gegevens, waarbij de grafiek elke 15 seconden wordt bijgewerkt.

PostgreSQL actieve sessiegeschiedenis - nieuwe pgsentinel-extensie

Bron: www.habr.com

Voeg een reactie