सक्रिय कनेक्शन और शेष कनेक्शन की संख्या


21

मैं समय की अवधि में कनेक्शन की चरम संख्या के बारे में आंकड़े प्राप्त करना चाहूंगा।

मुझे pg_stat_activityदृश्य पता है , पसंद है select count(*) from pg_stat_activity, लेकिन मुझे लगता है कि यह तरीका बहुत स्मार्ट नहीं है।

क्या अन्य दृश्य या टेबल हैं जो मुझे आवश्यक जानकारी प्रदान कर सकते हैं?

जवाबों:


39

यह एसक्यूएल आपकी मदद करेगा

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;

परिणाम प्राप्त करने के लिए सीएसवी फ़ाइल।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.