Số lượng kết nối hoạt động và kết nối còn lại


21

Tôi muốn có được số liệu thống kê về số lượng kết nối cao nhất trong một khoảng thời gian.

Tôi biết pg_stat_activityquan điểm, thích select count(*) from pg_stat_activity, nhưng tôi nghĩ phương pháp này không thông minh lắm.

Có các khung nhìn hoặc bảng khác có thể cung cấp thông tin tôi cần không?

Câu trả lời:


39

SQL này sẽ giúp bạn

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

Kết quả:

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

Bạn có thể đặt cái này trong vỏ:

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

hoặc bạn có thể ghi kết quả vào một bảng, sau đó thực hiện

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

để có được kết quả tập tin csv.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.