PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pemantauan Dinamis Instance PostgreSQL Menggunakan pg_top

Memantau PostgreSQL terkadang bisa seperti mencoba bertengkar dengan ternak dalam badai petir. Aplikasi terhubung dan mengeluarkan kueri dengan sangat cepat, sulit untuk melihat apa yang terjadi atau bahkan mendapatkan gambaran umum yang baik tentang kinerja sistem selain dari jenis permintaan pengembang biasa yang mengeluh 'semuanya lambat, tolong!'.

Dalam artikel sebelumnya, kita telah membahas cara Mendapatkan ke Sumber saat PostgreSQL bertindak lambat, tetapi ketika sumber secara khusus menanyakan, pemantauan tingkat dasar mungkin tidak cukup untuk menilai apa yang terjadi di lingkungan langsung yang aktif.

Masukkan pg_top, program khusus PostgreSQL untuk memantau aktivitas waktu nyata dalam database, serta melihat informasi dasar untuk host database itu sendiri. Sama seperti perintah linux 'top', menjalankannya membawa pengguna ke tampilan interaktif langsung dari aktivitas database di host, menyegarkan secara otomatis dalam interval.

Pemasangan

Menginstal pg_top dapat dilakukan dengan cara yang diharapkan secara umum:manajer paket dan instalasi sumber. Versi terbaru pada artikel ini adalah 3.7.0.

Manajer Paket

Berdasarkan distribusi linux yang dimaksud, cari pgtop atau pg_top di pengelola paket, kemungkinan tersedia di beberapa aspek untuk versi PostgreSQL yang diinstal pada sistem.

Distro berbasis Red Hat:

# sudo yum install pg_top

Distro berbasis Gentoo:

# sudo apt-get install pgtop

Sumber

Jika diinginkan, pg_top dapat diinstal melalui sumber dari repositori git PostgreSQL. Ini akan memberikan versi apa pun yang diinginkan, bahkan versi yang lebih baru yang belum ada dalam rilis resmi.

Fitur

Setelah diinstal, pg_top berfungsi sebagai tampilan waktu nyata yang sangat akurat ke dalam database yang dipantaunya dan menggunakan baris perintah untuk menjalankan 'pg_top' akan meluncurkan alat pemantauan PostgreSQL interaktif.

Alat itu sendiri dapat membantu menjelaskan semua proses yang saat ini terhubung ke database.

Menjalankan pg_top

Meluncurkan pg_top sama dengan perintah 'top' gaya unix / linux itu sendiri, bersama dengan informasi koneksi ke database.

Untuk menjalankan pg_top pada host database lokal:

pg_top -h localhost -p 5432 -d severalnines -U postgres

Untuk menjalankan pg_top pada host jarak jauh, flag -r atau --remote-mode diperlukan, dan ekstensi pg_proctab diinstal pada host itu sendiri:

pg_top -r -h 192.168.1.20 -p 5432 -d severalnines -U postgres

Apa yang ada di layar

Saat meluncurkan pg_top, kami melihat tampilan dengan sedikit informasi.

Output standar dari pg_top di linux

Rata-Rata Muat:
Seperti perintah standar teratas, rata-rata pemuatan ini untuk interval 1, 5, dan 15 menit.

Uptime:
Jumlah total waktu sistem online sejak reboot terakhir.

Proses:
Jumlah total proses database yang terhubung, dengan jumlah berapa banyak yang sedang berjalan dan berapa banyak yang sedang tidur.

Statistik CPU:
Statistik CPU, menunjukkan persentase beban untuk pengguna, sistem, dan idle, informasi bagus serta persentase iowait.

Memori:
Jumlah total memori yang digunakan, gratis, dalam buffer dan cache.

Aktivitas DB:
Statistik untuk aktivitas database seperti transaksi per detik, jumlah rollback per detik, buffer baca per detik, buffer hit per detik, jumlah baris yang dibaca per detik, dan baris yang ditulis per detik.

Aktivitas I/O DB:
Aktivitas untuk Input Output pada sistem, menunjukkan berapa banyak yang membaca dan menulis per detik, serta jumlah yang dibaca dan ditulis per detik.

Statistik Disk DB:
Ukuran total disk basis data, serta berapa banyak ruang kosong.

Swap:
Informasi tentang ruang swap yang digunakan, jika ada.

Proses:
Daftar proses yang terhubung ke database, termasuk semua jenis proses internal autovacuum. Daftar tersebut mencakup pid, prioritas, jumlah nice, memori tetap yang digunakan, status koneksi, jumlah detik cpu yang digunakan, persentase cpu, dan perintah saat ini yang sedang dijalankan proses.

Fitur Interaktif Berguna

Ada beberapa fitur interaktif di pg_top yang dapat diakses saat sedang berjalan. Daftar lengkap dapat ditemukan dengan memasukkan ?, yang akan menampilkan layar bantuan dengan semua opsi berbeda yang tersedia.

Informasi Perencana

E - Rencana Eksekusi
Memasukkan E akan memberikan prompt untuk ID proses yang menunjukkan rencana penjelasan. Ini sama dengan menjalankan “MENJELASKAN ;” dalam database secara manual.

A - EXPLAIN ANALYZE (UPDATE/DELETE safe)
Memasukkan A akan memberikan prompt untuk ID proses yang menunjukkan rencana EXPLAIN ANALYZE. Ini sama dengan menjalankan “EXPLAIN ANALYZE ;” dalam database secara manual.

Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

Informasi Proses

Q - Tampilkan kueri proses saat ini
Memasukkan Q akan memberikan konfirmasi ID proses untuk menampilkan kueri lengkap.

I - Menampilkan statistik I/O per proses (khusus Linux)
Memasuki Saya mengalihkan daftar proses ke tampilan I/O, menampilkan setiap proses membaca, menulis, dll ke disk.

L - Menunjukkan kunci yang ditahan oleh suatu proses
Memasukkan L akan memberikan prompt untuk ID proses yang akan menunjukkan kunci yang ditahan. Ini akan mencakup database, tabel, jenis kunci, dan apakah kunci telah diberikan atau tidak. Berguna saat menjelajahi proses yang berjalan lama atau menunggu.

Informasi Hubungan

R - Tampilkan statistik tabel pengguna.
Memasukkan R menampilkan statistik tabel termasuk pemindaian berurutan, pemindaian indeks, INSERT, UPDATE, dan DELETE, semuanya relevan dengan aktivitas terbaru.

X - Tampilkan statistik indeks pengguna
Memasukkan X menunjukkan statistik indeks termasuk pemindaian indeks, pembacaan indeks, dan pengambilan indeks, semuanya relevan dengan aktivitas terbaru.

Penyortiran

Pengurutan tampilan dapat dilakukan melalui salah satu karakter berikut.
M - Urutkan berdasarkan penggunaan memori
N - Urutkan berdasarkan pid
P - Urutkan berdasarkan penggunaan CPU
T - Urutkan berdasarkan waktu

Berikut ini adalah entri yang ditentukan setelah menekan o, memungkinkan pengurutan indeks, tabel, dan halaman stat i/o juga.
o - Tentukan urutan pengurutan (cpu, ukuran, res, waktu, perintah)
sc,scharid stats (idx_scan, idx_tup_fetch, idx_tup_read)
        tabel stats (seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_    ) , menulis, menulis, perintah)

Koneksi / Manipulasi Kueri

k - kill proses yang ditentukan
Memasukkan k akan memberikan prompt untuk suatu proses, atau daftar proses database untuk dimatikan.

r - renice a process (hanya database lokal, hanya root)
Memasukkan r akan memberikan prompt untuk nilai bagus, diikuti dengan daftar proses untuk disetel ke nilai bagus baru itu. Ini mengubah prioritas proses penting dalam sistem.

Contoh:“renice 1 7004”

Perbedaan Penggunaan pg_top

Penggunaan Reaktif pg_top

Penggunaan umum untuk pg_top adalah mode interaktif, yang memungkinkan kita untuk melihat kueri apa yang berjalan pada sistem yang mengalami masalah kelambatan, menjalankan rencana penjelasan pada kueri tersebut, mengubah kueri penting untuk menyelesaikannya lebih cepat, atau mematikan kueri apa pun yang menyebabkan perlambatan besar . Secara umum, ini memungkinkan administrator database untuk melakukan banyak hal yang sama yang dapat dilakukan secara manual pada sistem, tetapi dengan opsi yang lebih cepat dan lengkap.

Penggunaan Proaktif pg_top

Meskipun tidak terlalu umum, pg_top dapat dijalankan dalam 'mode batch', yang akan menampilkan informasi utama yang dibahas ke standar keluar, lalu keluar. Ini dapat dibuat skrip untuk dijalankan pada interval tertentu, kemudian dikirim ke proses kustom apa pun yang diinginkan, diuraikan, dan peringatan yang dihasilkan berdasarkan apa yang mungkin ingin diperingatkan oleh administrator. Misalnya, jika beban sistem menjadi terlalu tinggi, jika ada nilai transaksi per detik yang lebih tinggi dari yang diharapkan, apa pun yang dapat diketahui oleh program kreatif.

Umumnya, ada alat lain untuk mengumpulkan dan melaporkan informasi ini, tetapi memiliki lebih banyak opsi selalu merupakan hal yang baik, dan dengan memiliki lebih banyak alat yang tersedia, opsi terbaik dapat ditemukan.

Penggunaan Historis pg_top

Sama seperti penggunaan sebelumnya, penggunaan proaktif, kita dapat membuat skrip pg_top dalam mode batch untuk mencatat snapshot seperti apa database dari waktu ke waktu. Ini bisa sesederhana menulisnya ke file teks dengan stempel waktu, atau menguraikannya dan menyimpan tanggal dalam database relasional untuk menghasilkan laporan. Ini akan memungkinkan lebih banyak informasi ditemukan setelah insiden besar, seperti database crash pada jam 4 pagi. Semakin banyak data yang tersedia, semakin besar kemungkinan masalah dapat ditemukan.

Informasi Lebih Lanjut

Dokumentasi untuk proyek ini cukup terbatas, dan sebagian besar informasi tersedia di halaman manual linux, yang dapat ditemukan dengan menjalankan 'man pg_top'. Komunitas PostgreSQL dapat membantu dengan pertanyaan atau masalah melalui Milis PostgreSQL, atau Ruang Obrolan IRC resmi yang terdapat di freenode, nama saluran #postgresql.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres homebrew rusak

  2. Cara menginstal PostgreSQL di macOS

  3. Bagaimana cara mengkonfigurasi postgresql untuk pertama kalinya?

  4. Bagaimana saya mendapatkan psycopg2 logging dari waktu eksekusi kueri?

  5. Mengintegrasikan PostgreSQL Dengan Sistem Otentikasi