Saya menggunakan mesin berbasis open source (RHEL 6.2) yang menjalankan perangkat lunak SIEM. Ketika saya menjalankan top
perintah, saya melihat postgres
dan postmaster
keduanya dengan penggunaan CPU 96%. Apakah ada cara untuk menunjuk atau melihat apa yang menyebabkan layanan ini menumpuk?
postgresql
asadz
sumber
sumber
postgress
yaitupostgres
dan Anda baru saja disalin dengan tangan.Jawaban:
Anda dapat mencocokkan ID backend Postgres tertentu dengan ID proses sistem menggunakan
pg_stat_activity
tabel sistem.SELECT pid, datname, usename, query FROM pg_stat_activity;
bisa menjadi titik awal yang baik.Setelah Anda tahu pertanyaan apa yang sedang berjalan, Anda dapat menyelidiki lebih lanjut (
EXPLAIN
/EXPLAIN ANALYZE
; periksa kunci, dll.)sumber
WHERE
klausa, tetapi jika Anda tidak memiliki sejumlah besar PID itu sama saja mudah mencari melalui output penuh. Manual Postgres memiliki detail tambahan tentang apa yang bisa Anda dapatkanpg_stat_activity
, serta tabel statistik-pengumpul lainnya (yang dapat membantu Anda jika masalah Anda bukan permintaan pengguna).Saya mengalami masalah yang sama. Postgresql diatur pada AWS RDS dan memiliki utilisasi cpu 100% bahkan setelah meningkatkan instance. Saya debugged dengan metode yang ditunjukkan di sini dan salah satu metode yang bekerja untuk saya.
Saya memeriksa permintaan yang berjalan untuk waktu yang paling lama dan mengetahui bahwa permintaan tertentu macet dan berjalan sejak lebih dari 3-4 jam. Untuk memeriksa sejak berapa lama kueri berjalan, jalankan perintah berikut:
Jika ini lebih dari satu jam, maka ini masalahnya. Matikan koneksi yang sudah berjalan lama dan batasi usia maks koneksi dari sisi aplikasi.
sumber
Jika ini benar-benar kepala kantor pos menggunakan semua CPU itu, maka Anda kemungkinan memiliki masalah pertikaian kunci, mungkin karena sangat tinggi
max_connections
. Pertimbangkan untuk menurunkanmax_connections
dan menggunakan pooler koneksi jika ini masalahnya.Kalau tidak: Detail, silakan. Output penuh
top -b -n 1
untuk memulai.sumber