Como Derrubar Conexões do PostgreeSQL(Timeout while getting a connection from pool)

Estava com o seguinte problema ocorrendo intermitente quando executava uma Function usando C# com NpgSQL: “Timeout while getting a connection from pool”, identifiquei que estava com problema para fechar as conexões ao executar a função e corrigi, porém ainda existia conexões pendentes travadas, segue comandos para executar para derrubar conexões ativas do PostgreSQL . Segue Link de referencia, eu testei nas duas versões e funcina normalmente: LINK

Até versão PostgreSQL 9.1:

SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'Nome_Banco_Dados'
  AND procpid <> pg_backend_pid();

Após versão PostgreSQL 9.2:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'Nome_Banco_Dados'
  AND pid <> pg_backend_pid();

Outra dica importante é desabilitar o Pooling na connection string que pode causar um problema em concorrencia, mas isso depende do cenario da sua aplicação, o Pooling de conexão é para fazer um cache de conexões de banco de dados mantido para que as conexões podem ser reutilizados, quando são necessárias futuras solicitações para o banco de dados. Ligado ajuda a melhorar o desempenho de executar comandos numa base de dados, porém é necessário gerenciar isso para não travar as conexões.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s