Nombre de connexions actives et de connexions restantes


21

Je voudrais obtenir des statistiques sur le nombre maximal de connexions sur une période de temps.

Je connais la pg_stat_activityvue, comme select count(*) from pg_stat_activity, mais je pense que cette méthode n'est pas très intelligente.

Y a-t-il d'autres vues ou tableaux qui peuvent fournir les informations dont j'ai besoin?

Réponses:


39

Ce SQL vous aidera

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

Résultat:

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

Vous pouvez mettre cela dans le shell:

#!/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

ou vous pouvez enregistrer les résultats dans un tableau, puis exécuter

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

pour obtenir le fichier csv de résultat.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.