Intenté usar un script de Nagios para monitorear la cantidad de conexiones de la base de datos en una base de datos de Postgres y llegué a este problema: estas se cuentan como conexiones abiertas actualmente y se miden cada 5 minutos.
SELECT sum(numbackends) FROM pg_stat_database;
Aún así, esto parece perder una gran cantidad de conexiones de corta duración, por lo que las estadísticas están lejos de la realidad.
Traté de ejecutar el script manualmente y observé grandes cambios incluso entre dos conexiones hechas a unos segundos de distancia una de la otra.
¿Cómo podría obtener esta información de manera confiable? like max (connectios) ocurrió durante un intervalo de tiempo.
PgBouncer
frente a su instancia de PostgreSQL, pondrá en cola las conexiones cuando esté demasiado ocupado en lugar de rechazarlas. (Sí, es estúpido que PostgreSQL no pueda hacer eso por sí mismo, pero no es una solución simple; vea las discusiones interminables en las listas de correo sobre la agrupación integrada).log_connections
ylog_disconnections
) en el archivo de registro (por ejemplo, csvlog) y luego use pgBadger o algo similar para extraerlo del archivo de registro?Respuestas:
Es mejor usar herramientas de monitoreo de carga de trabajo como
pgbadger
para verificar las conexiones de la base de datos y la carga general. Le ayudará a comprender qué usuarios se están conectando durante cuánto tiempo y qué consultas están realizando. Para obtener información sobre la instalación y configuración de pgbadger, consulte esta página.Si solo desea verificar la cantidad de conexiones activas, puede usar
select count(*) from pg_stat_activity where state='active'
fuente
Puede usar la extensión con local_preload_libraries para hacer esto.
Algo como esto:
O en su lugar, ACTUALIZAR a través de NOTIFICAR
fuente