Я спробував використовувати сценарій Nagios для моніторингу кількості підключень до бази даних Postgres, і я дійшов до цієї проблеми: вони зараховуються як поточні відкриті з'єднання і вимірюються кожні 5 хвилин.
SELECT sum(numbackends) FROM pg_stat_database;
Але все ж, здається, це не вистачає величезної кількості короткочасних зв’язків, тому статистика далеко не реальна.
Я спробував запустити сценарій вручну, і я помітив великі зміни навіть між двома з'єднаннями, зробленими за кілька секунд один від іншого.
Як я міг отримати цю інформацію надійним чином? як-от max (connectios) траплявся протягом часового інтервалу.
PgBouncer
перед вашим екземпляром PostgreSQL, він буде чекати з'єднань, коли він занадто зайнятий, а не відхиляти їх. (Так, нерозумно, що PostgreSQL не може зробити це самостійно, але це не просте виправлення; див. Нескінченні дискусії у списках розсилки про вбудований пул).
log_connections
та log_disconnections
) у файл реєстрації (наприклад, csvlog), а потім використовувати pgBadger або щось подібне, щоб витягнути це з журналу файлів?