การแก้ปัญหาการใช้งาน CPU สูงจากบริการ postgres และ postmaster


27

ฉันใช้เครื่องที่ใช้โอเพ่นซอร์ส (RHEL 6.2) ที่ใช้ซอฟต์แวร์ SIEM เมื่อฉันรันtopคำสั่งฉันเห็นpostgresและpostmasterทั้งคู่ด้วยการใช้งาน CPU 96% มีวิธีในการปักหมุดหรือดูว่าอะไรทำให้บริการเหล่านี้ซ้อนกัน?


2
"RHCE 6.2" หรือไม่ คุณหมายถึง "RHEL 6.2" หรือไม่ ฉันถือว่าpostgressเป็นpostgresและคุณเพิ่งคัดลอกมันด้วยมือ
Craig Ringer

คำตอบ:


29

คุณสามารถจับคู่แบ็กเอนด์ Postgres เฉพาะกับ ID กระบวนการของระบบโดยใช้pg_stat_activityตารางระบบ

SELECT pid, datname, usename, query FROM pg_stat_activity;สามารถเป็นจุดเริ่มต้นที่ดี
เมื่อคุณทราบว่าแบบสอบถามใดทำงานอยู่คุณสามารถตรวจสอบเพิ่มเติม ( EXPLAIN/ EXPLAIN ANALYZE; ตรวจสอบล็อค ฯลฯ )


นี่เป็นคำถามที่ถูกต้องหรือไม่ฉันไม่คุ้นเคยกับฐานข้อมูลมากนักเนื่องจากเป็นคนที่ทำงานกับ Siem ข้อความที่คุณเลือกฉันต้องป้อน pid จากคำสั่งด้านบนหรือไม่
asadz

1
@asadz ไม่มันถูกตัดทอน (แก้ไขแล้ว) - หากคุณมี PID เฉพาะและต้องการดูว่าพวกเขากำลังทำงานอะไรคุณสามารถแยกพวกมันด้วยWHEREประโยคได้ แต่ถ้าคุณไม่มี PID จำนวนมากมันก็เหมือนกับ ง่ายต่อการค้นหาผ่านเอาต์พุตเต็มรูปแบบ คู่มือ Postgres มีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถทำได้pg_stat_activityเช่นเดียวกับตารางตัวรวบรวมสถิติอื่น ๆ (ซึ่งสามารถช่วยคุณได้หากปัญหาของคุณไม่ใช่แบบสอบถามผู้ใช้)
voretaq7

เมื่อฉันเรียกใช้แบบสอบถามนี้ไม่มี PID ที่ฉันต้องสงสัย
Fendi Tri Cahyono

ขอบคุณสำหรับเบาะแสเมื่อเร็ว ๆ นี้ฉันพบปัญหาที่คล้ายกันและหาเหตุผลโดยใช้SELECT * จาก pg_stat_activity;
เย้า

14

ฉันมีปัญหาเดียวกัน postgresql ถูกติดตั้งบน AWS RDS และมีการใช้งาน cpu 100% แม้หลังจากเพิ่มอินสแตนซ์แล้ว ฉัน debugged ด้วยวิธีการที่แสดงที่นี่และหนึ่งในวิธีการที่ได้ผลสำหรับฉัน

ฉันตรวจสอบคิวรีที่รันเป็นเวลานานและรู้ว่าคิวรีบางอันค้างอยู่และทำงานมานานกว่า 3-4 ชั่วโมง ในการตรวจสอบว่าคิวรีรันอยู่นานเท่าไรให้รันคำสั่งต่อไปนี้:

SELECT max(now() - xact_start) FROM pg_stat_activity
                               WHERE state IN ('idle in transaction', 'active');

หากนี่เป็นเวลามากกว่าหนึ่งชั่วโมงกว่านี้จะเป็นปัญหา ทำลายการเชื่อมต่อที่ใช้เวลานานและ จำกัด อายุสูงสุดของการเชื่อมต่อจากด้านแอปพลิเคชัน


7

max_connectionsถ้าเรื่องนี้เป็นจริงไปรษณีย์โดยใช้ทุกสิ่งที่ซีพียูแล้วคุณจะมีปัญหาล็อคความขัดแย้งอาจเป็นเพราะความสูงมาก พิจารณาลดmax_connectionsและใช้ตัวเชื่อมต่อเชื่อมต่อหากเป็นกรณีนี้

มิฉะนั้น: รายละเอียดโปรด เอาท์พุทเต็มรูปแบบของtop -b -n 1การเริ่มต้น


เรื่องนี้ทำให้รู้สึก; เนื่องจากนักวิเคราะห์ใช้ SIEM เพื่อค้นหาข้อมูลจำนวนมากไปมา มีวิธีที่ฉันสามารถตรวจสอบสถานะการล็อค; หรือเงื่อนไขประกอบ ?
asadz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.