PostgreSQL aktif oturum geçmişi - yeni pgsentinel uzantısı

şirket pgsentinel aynı adı taşıyan pgsentinel uzantısını yayınladı (github deposu), PostgreSQL'e pg_active_session_history görünümünü (aktif oturumların geçmişi) ekler (Oracle'ın v$active_session_history görünümüne benzer).

Esas itibarıyla bunlar pg_stat_activity'den alınan saniye saniye anlık görüntülerdir, ancak önemli noktalar da vardır:

  1. Birikmiş tüm bilgiler yalnızca RAM'de saklanır ve tüketilen bellek miktarı, en son saklanan kayıtların sayısına göre düzenlenir.
  2. Sorgu kimliği alanı eklendi - pg_stat_statements uzantısındaki sorgu kimliğiyle aynı (ön kurulum gereklidir).
  3. Top_level_query alanı eklenir - mevcut sorgunun çağrıldığı sorgunun metni (pl/pgsql kullanılıyorsa)


pg_active_session_history alanlarının tam listesi:

      Sütun | ------------------- ash_time yazın | saat dilimi datid'li zaman damgası | oid tarih adı | metin kodu | tamsayı usesysid | oid kullanıcı adı | metin uygulama_adı | metin client_addr | metin istemci_anasistem adı | metin client_port | tamsayı arka uç_başlangıç ​​| saat dilimini içeren zaman damgası xact_start | saat dilimini içeren zaman damgası query_start | saat dilimini içeren zaman damgası state_change | saat dilimini içeren zaman damgası wait_event_type | metin wait_event | metin durumu | metin backend_xid | xid arka uç_xmin | xid top_level_query | metin sorgusu | metin sorgulama kimliği | bigint arka uç_tipi | metin                     

Henüz kurulum için hazır bir paket bulunmamaktadır. Kaynakları indirmeniz ve kütüphaneyi kendiniz oluşturmanız önerilir. Öncelikle sunucunuz için “devel” paketini kurmanız ve PATH değişkeninde yolu pg_config olarak ayarlamanız gerekiyor. Biz topluyoruz:

cd pgsentinel/src
yapmak
make install

Postgres.conf'a parametreler ekleyin:

paylaşılan_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = tümü

# hafızada tutulan son kayıtların sayısı
pgsentinel_ash.max_entries = 10000

PostgreSQL'i yeniden başlatın ve bir uzantı oluşturun:

pgsentinel uzantısını oluşturun;

Toplanan bilgiler aşağıdaki gibi soruları yanıtlamamızı sağlar:

  • En çok hangi bekleme oturumlarında zaman harcadınız?
  • En aktif oturumlar hangileriydi?
  • En aktif istekler hangileriydi?

Elbette bu soruların cevaplarını SQL sorgularını kullanarak alabilirsiniz ancak ilgilendiğiniz zaman aralıklarını fareyle vurgulayarak bunu grafik üzerinde görsel olarak görmek daha uygundur. Bunu ücretsiz bir programla yapabilirsiniz PASH-Görüntüleyici (toplanan ikili dosyaları bölümden indirebilirsiniz) Bildirileri).

PASH-Viewer (sürüm 0.4.0'dan itibaren) başlarken pg_active_session_history görünümünün varlığını kontrol eder ve eğer varsa, birikmiş geçmişin tamamını buradan yükler ve grafiği her 15 saniyede bir güncelleyerek yeni gelen verileri okumaya devam eder.

PostgreSQL aktif oturum geçmişi - yeni pgsentinel uzantısı

Kaynak: habr.com

Yorum ekle