Kasaysayan ng aktibong session ng PostgreSQL - bagong extension ng pgsentinel

kompanya pgsentinel inilabas ang extension ng pgsentinel ng parehong pangalan (github repository), na nagdaragdag ng pg_active_session_history view sa PostgreSQL β€” ang kasaysayan ng mga aktibong session (katulad ng v$active_session_history ng Oracle).

Sa totoo lang, ito ay mga segundo-by-segundong snapshot mula sa pg_stat_activity, ngunit may mga mahahalagang punto:

  1. Ang lahat ng naipon na impormasyon ay nakaimbak lamang sa RAM, at ang natupok na halaga ng memorya ay kinokontrol ng bilang ng mga huling nakaimbak na tala.
  2. Idinagdag ang field ng queryid - ang parehong queryid mula sa extension ng pg_stat_statements (kinakailangan ang pre-installation).
  3. Ang field na top_level_query ay idinagdag - ang teksto ng query kung saan tinawag ang kasalukuyang query (kung gumagamit ng pl/pgsql)


Buong listahan ng mga field ng pg_active_session_history:

      Hanay | I-type ------------------ ash_time | timestamp na may time zone datid | oid datename | text pid | integer usesysid | oid usename | text application_name | text client_addr | text client_hostname | text client_port | integer backend_start | timestamp na may time zone xact_start | timestamp na may time zone query_start | timestamp na may time zone state_change | timestamp na may time zone wait_event_type | text wait_event | estado ng teksto | text backend_xid | xid backend_xmin | xid top_level_query | text query | text queryid | bigint backend_type | text                     

Wala pang handa na pakete para sa pag-install. Iminumungkahi na i-download ang mga mapagkukunan at i-assemble ang library nang mag-isa. Kailangan mo munang i-install ang package na β€œdevel” para sa iyong server at itakda ang path sa pg_config sa PATH variable. Kinokolekta namin:

cd pgsentinel/src
gumawa
gumawa ng i-install

Magdagdag ng mga parameter sa postgres.conf:

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

# na bilang ng mga kamakailang record na hawak sa memorya
pgsentinel_ash.max_entries = 10000

I-restart ang PostgreSQL at lumikha ng extension:

lumikha ng extension pgsentinel;

Ang naipon na impormasyon ay nagpapahintulot sa amin na sagutin ang mga tanong tulad ng:

  • Anong mga sesyon ng paghihintay ang pinakamatagal mong ginugugol?
  • Aling mga session ang pinakaaktibo?
  • Anong mga kahilingan ang pinaka-aktibo?

Siyempre, maaari kang makakuha ng mga sagot sa mga tanong na ito gamit ang mga query sa SQL, ngunit mas maginhawang makita ito nang biswal sa isang graph sa pamamagitan ng pag-highlight ng mga agwat ng oras ng interes gamit ang mouse. Magagawa mo ito sa isang libreng programa PASH-Viewer (maaari mong i-download ang mga nakolektang binary sa seksyon Paglabas).

Kapag nagsimula, sinusuri ng PASH-Viewer (simula sa bersyon 0.4.0) ang presensya ng pg_active_session_history view at kung mayroon ito, nilo-load nito ang buong naipon na history mula rito at patuloy na nagbabasa ng bagong paparating na data, ina-update ang graph tuwing 15 segundo.

Kasaysayan ng aktibong session ng PostgreSQL - bagong extension ng pgsentinel

Pinagmulan: www.habr.com

Magdagdag ng komento