Saya mencoba menggunakan skrip Nagios untuk memantau jumlah koneksi basis data pada basis data Postgres dan saya mencapai masalah ini: ini dihitung sebagai koneksi terbuka dan diukur setiap 5 menit.
SELECT sum(numbackends) FROM pg_stat_database;
Namun, ini sepertinya kehilangan sejumlah besar koneksi berumur pendek, jadi statistiknya jauh dari kenyataan.
Saya mencoba menjalankan skrip secara manual dan saya mengamati perubahan besar bahkan antara dua koneksi membuat beberapa detik satu sama lain.
Bagaimana saya bisa mendapatkan informasi ini dengan cara yang dapat diandalkan? seperti max (connectios) terjadi selama interval waktu.
PgBouncer
di depan contoh PostgreSQL Anda, itu akan mengantri koneksi ketika terlalu sibuk alih-alih menolaknya. (Ya, itu bodoh bahwa PostgreSQL tidak dapat melakukan itu sendiri tetapi itu bukan perbaikan sederhana; lihat diskusi tanpa henti di milis tentang penyatuan bawaan).log_connections
danlog_disconnections
) ke dalam file log (mis. Csvlog) dan kemudian menggunakan pgBadger atau sesuatu yang serupa untuk mengekstraknya dari file log?Jawaban:
Lebih baik menggunakan alat pemantauan Beban Kerja seperti
pgbadger
untuk memeriksa koneksi basis data dan beban keseluruhan. Ini akan membantu Anda memahami pengguna mana yang terhubung untuk berapa banyak waktu dan pertanyaan apa yang dipecat oleh mereka. Untuk informasi tentang menginstal dan mengkonfigurasi pgbadger, lihat halaman ini .Jika Anda hanya ingin memeriksa jumlah koneksi yang aktif, Anda dapat menggunakan
select count(*) from pg_stat_activity where state='active'
sumber
Anda dapat menggunakan ekstensi dengan local_preload_libraries untuk melakukan ini.
Sesuatu seperti ini:
Atau sebagai gantinya UPDATE via NOTIFY
sumber