ฉันใช้เครื่องที่ใช้โอเพ่นซอร์ส (RHEL 6.2) ที่ใช้ซอฟต์แวร์ SIEM เมื่อฉันรันtop
คำสั่งฉันเห็นpostgres
และpostmaster
ทั้งคู่ด้วยการใช้งาน CPU 96% มีวิธีในการปักหมุดหรือดูว่าอะไรทำให้บริการเหล่านี้ซ้อนกัน?
ฉันใช้เครื่องที่ใช้โอเพ่นซอร์ส (RHEL 6.2) ที่ใช้ซอฟต์แวร์ SIEM เมื่อฉันรันtop
คำสั่งฉันเห็นpostgres
และpostmaster
ทั้งคู่ด้วยการใช้งาน CPU 96% มีวิธีในการปักหมุดหรือดูว่าอะไรทำให้บริการเหล่านี้ซ้อนกัน?
คำตอบ:
คุณสามารถจับคู่แบ็กเอนด์ Postgres เฉพาะกับ ID กระบวนการของระบบโดยใช้pg_stat_activity
ตารางระบบ
SELECT pid, datname, usename, query FROM pg_stat_activity;
สามารถเป็นจุดเริ่มต้นที่ดี
เมื่อคุณทราบว่าแบบสอบถามใดทำงานอยู่คุณสามารถตรวจสอบเพิ่มเติม ( EXPLAIN
/ EXPLAIN ANALYZE
; ตรวจสอบล็อค ฯลฯ )
WHERE
ประโยคได้ แต่ถ้าคุณไม่มี PID จำนวนมากมันก็เหมือนกับ ง่ายต่อการค้นหาผ่านเอาต์พุตเต็มรูปแบบ คู่มือ Postgres มีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถทำได้pg_stat_activity
เช่นเดียวกับตารางตัวรวบรวมสถิติอื่น ๆ (ซึ่งสามารถช่วยคุณได้หากปัญหาของคุณไม่ใช่แบบสอบถามผู้ใช้)
ฉันมีปัญหาเดียวกัน postgresql ถูกติดตั้งบน AWS RDS และมีการใช้งาน cpu 100% แม้หลังจากเพิ่มอินสแตนซ์แล้ว ฉัน debugged ด้วยวิธีการที่แสดงที่นี่และหนึ่งในวิธีการที่ได้ผลสำหรับฉัน
ฉันตรวจสอบคิวรีที่รันเป็นเวลานานและรู้ว่าคิวรีบางอันค้างอยู่และทำงานมานานกว่า 3-4 ชั่วโมง ในการตรวจสอบว่าคิวรีรันอยู่นานเท่าไรให้รันคำสั่งต่อไปนี้:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
หากนี่เป็นเวลามากกว่าหนึ่งชั่วโมงกว่านี้จะเป็นปัญหา ทำลายการเชื่อมต่อที่ใช้เวลานานและ จำกัด อายุสูงสุดของการเชื่อมต่อจากด้านแอปพลิเคชัน
max_connections
ถ้าเรื่องนี้เป็นจริงไปรษณีย์โดยใช้ทุกสิ่งที่ซีพียูแล้วคุณจะมีปัญหาล็อคความขัดแย้งอาจเป็นเพราะความสูงมาก พิจารณาลดmax_connections
และใช้ตัวเชื่อมต่อเชื่อมต่อหากเป็นกรณีนี้
มิฉะนั้น: รายละเอียดโปรด เอาท์พุทเต็มรูปแบบของtop -b -n 1
การเริ่มต้น
postgress
เป็นpostgres
และคุณเพิ่งคัดลอกมันด้วยมือ