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.
postgresql
performance
monitoring
sorin
fonte
fonte
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
elog_disconnections
) no arquivo de log (por exemplo, csvlog) e, em seguida, use o pgBadger ou algo semelhante para extrair isso do arquivo de log?Respostas:
É melhor usar as ferramentas de monitoramento de carga de trabalho, como
pgbadger
para verificar as conexões com o banco de dados e a carga geral. Isso ajudará você a entender quais usuários estão se conectando por quanto tempo e quais consultas estão sendo disparadas por eles. Para obter informações sobre a instalação e configuração do pgbadger, consulte esta página.Se você quiser apenas verificar o número de conexões ativas, poderá usar
select count(*) from pg_stat_activity where state='active'
fonte
Você pode usar a extensão com local_preload_libraries para fazer isso.
Algo assim:
Ou, em vez disso, ATUALIZAR via NOTIFY
fonte