Tôi đã cố gắng sử dụng tập lệnh Nagios để theo dõi số lượng kết nối cơ sở dữ liệu trên cơ sở dữ liệu Postgres và tôi đã gặp phải vấn đề này: chúng được tính là các kết nối hiện đang mở và được đo cứ sau 5 phút.
SELECT sum(numbackends) FROM pg_stat_database;
Tuy nhiên, điều này dường như bỏ lỡ một số lượng lớn các kết nối ngắn hạn, vì vậy các số liệu thống kê là xa thực tế.
Tôi đã cố gắng chạy tập lệnh theo cách thủ công và tôi đã quan sát những thay đổi lớn ngay cả giữa hai kết nối cách nhau vài giây.
Làm thế nào tôi có thể nhận được thông tin này một cách đáng tin cậy? như max (kết nối) đã xảy ra trong một khoảng thời gian.
PgBouncer
trước ví dụ PostgreQuery của bạn, nó sẽ xếp hàng các kết nối khi quá bận thay vì từ chối chúng. (Vâng, thật ngu ngốc khi PostgreSQL không thể tự làm điều đó nhưng nó không phải là một sửa chữa đơn giản; xem các cuộc thảo luận bất tận về danh sách gửi thư được tích hợp lại).
log_connections
và log_disconnections
) vào logfile (ví dụ: csvlog) và sau đó sử dụng pgBadger hoặc một cái gì đó tương tự để trích xuất từ logfile?