จำนวนการเชื่อมต่อที่ใช้งานและการเชื่อมต่อที่เหลือ


21

ฉันต้องการรับสถิติเกี่ยวกับจำนวนการเชื่อมต่อสูงสุดในช่วงระยะเวลาหนึ่ง

ฉันรู้ว่าpg_stat_activityมุมมองชอบselect count(*) from pg_stat_activityแต่ฉันคิดว่าวิธีนี้ไม่ฉลาดมาก

มีมุมมองหรือตารางอื่น ๆ ที่สามารถให้ข้อมูลที่ฉันต้องการได้หรือไม่?

คำตอบ:


39

SQL นี้จะช่วยคุณ

select max_conn,used,res_for_super,max_conn-used-res_for_super res_for_normal 
from 
  (select count(*) used from pg_stat_activity) t1,
  (select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) t2,
  (select setting::int max_conn from pg_settings where name=$$max_connections$$) t3

ผล:

max_conn | used | res_for_super | res_for_normal 
---------+------+---------------+----------------
  100    |    2 |             3 |             95
(1 row)

คุณสามารถใส่มันลงไปในเปลือก:

#!/bin/bash
for (( c=1; c<=3600; c++ ))
do
     gsql -U pgdba -W pgdba -p 6432 -c "sql" >> /home/pgdba/res_data.log
     sleep 1  # once per second
done

หรือคุณสามารถบันทึกผลลัพธ์ลงในตารางจากนั้นดำเนินการ

postgres=# copy restbl to '/home/pgdba/res.csv' csv header;

เพื่อรับไฟล์ csv ผลลัพธ์

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