Muitas conexões inativas podem afetar o desempenho do PostgreSQL 9.2?


8

Algumas consultas no meu servidor de banco de dados parecem levar muito tempo para responder e acredito que o uso da CPU seja alto. Ao executar ps aux, vejo ~ 250 conexões "inativas" (que acredito serem demais). Não comecei a fazer um diagnóstico completo, mas queria saber se esse é um bom lugar para começar a procurar.

Também estou usando o PgBouncer com pool no nível da transação. Suspeito que possa reduzir facilmente o número de idleconexões ajustando o tamanho do pool. No entanto, não quero começar a fazer muitas alterações, a menos que haja um bom motivo para fazê-lo.

Muitas idleconexões no PostgreSQL 9.2 podem afetar o desempenho?

Muito obrigado!


o que significa "muitas conexões ociosas"? dezenas? centenas?
jap1968

Pergunta editada. Obrigado por apontar isso. Só para deixar claro, última contagem foi ~ 250
Juan Carlos Coto

Talvez? Eu sei que o Oracle DBA aqui pediu às pessoas que definissem suas ferramentas de desenvolvimento para usar uma única sessão para todas as janelas (em vez de uma nova sessão para todas as janelas) quando o banco de dados de desenvolvimento começou a ficar muito lento. O número exato que conta como "muitos" provavelmente dependerá dos recursos disponíveis para o seu banco de dados.
FrustratedWithFormsDesigner

Respostas:


3

Eu duvido seriamente que conexões ociosas sejam seu problema. O PostgreSQL é muito capaz de lidar com sessões inativas, uma vez que elas quase não requerem recursos. Sessões ativas, por outro lado, são muito mais prováveis ​​da causa da lentidão.

Consulte https://wiki.postgresql.org/wiki/Number_Of_Database_Connections para obter referência sobre o número de conexões com o banco de dados.


Sessões ociosas com transações não confirmadas costumam ser culpadas!
Philᵀᴹ

Concordo, Phil, embora isso realmente não seja sobre o PostgreSQL - é mais sobre como o final do cliente é escrito (a menos que esteja faltando alguma coisa).
Max Vernon

Consulte uma pergunta relacionada sobre isso . Realmente ajudaria se você participasse. Obrigado!
Juan Carlos Coto

Na verdade, as conexões inativas têm muita sobrecarga (memória) e devem ser evitadas (acho que aloca cerca de 10 MB por conexão, portanto, no seu caso, você estaria desperdiçando pelo menos 2,5 GB de memória)
Kedare

11
@ MaxVernon - no meu servidor em execução postgresql 9.5, tenho 25 processos ociosos, para a coluna RES, ea. processo é, em média, cerca de 12MB (intervalo: 4.5MB - 584MB, eu suspeito que os maiores têm tx não confirmado).
CERD
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.