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
y log_disconnections
) en el archivo de registro (por ejemplo, csvlog) y luego use pgBadger o algo similar para extraerlo del archivo de registro?