Tentei usar um script Nagios para monitorar o número de conexões com o banco de dados Postgres e cheguei a este problema: elas são contadas como conexões abertas no momento e medidas a cada 5 minutos.
SELECT sum(numbackends) FROM pg_stat_database;
Ainda assim, isso parece perder um grande número de conexões de curta duração, portanto as estatísticas estão longe da realidade.
Tentei executar o script manualmente e observei grandes alterações, mesmo entre duas conexões feitas a poucos segundos de distância uma da outra.
Como eu pude obter essas informações de maneira confiável? como max (connectios) aconteceu durante um intervalo de tempo.
PgBouncer
na frente da sua instância do PostgreSQL, ele enfileirará as conexões quando estiver muito ocupado, em vez de rejeitá-las. (Sim, é estúpido que o PostgreSQL não possa fazer isso sozinho, mas não é uma solução simples; veja as intermináveis discussões nas listas de discussão sobre o pool interno).
log_connections
e log_disconnections
) no arquivo de log (por exemplo, csvlog) e, em seguida, use o pgBadger ou algo semelhante para extrair isso do arquivo de log?