Em 14-08-2012 17:13, Thiago Lima escreveu: > Boa tarde a todos, > > Estou com um problema aqui em meu BD (PostgreSQL 8.3.5 on > amd64-portbld-freebsd7.0)
Atualize para 8.3.19. Obrigatório. Tem muito bug já corrigido que você está desnecessariamente sujeito. > Existem algumas aplicações de geoprocessamento que fazem uso do banco, > porém o que me chamou atenção, e o que levou ao problema > foram as diversas conexões abertas. Tenho o max_connections = 800. Muito alto. Qualquer PostgreSQL com esse monte de conexões vai "abrir o bico", ficar lento. Considere utilizar o aglomerador de conexões eficiente, como o pgbouncer. > Recebi alguns chamados de algumas aplicações com erro, > e para minha surpresa ao tentar conectar via pgadmin não consegui, > dizendo que o limite de conexões havia excedido. Como media emergencial > reiniciei o banco, so que em uns 40 minutos já havia excedido novamente. > Fiquei preocupado até achando que era algum ataque. Acessei o server > status e constatei que existiam várias conexões em <IDLE> de um mesmo > usuário > para um mesmo banco. Para não impactar em outras aplicações os > servidores que estavam conectando exponencialmente foram desligados. > > Neste momento no meu server status tenho 39 conexões, todas marcadas > como <IDLE>, tenho por volta de 6 conexões partindo de um mesmo > servidor, utilizando o mesmo usuário acessando o mesmo banco. Verifique porque essas aplicações estão mantendo conexões abertas e sem uso. Todavia, se for aplicação Java, por exemplo, pode estar usando um pool do servidor de aplicações e essas conexões idle são normais. > Em pesquisa verifiquei os seguintes parametros do postgresql.conf: > *tcp_keepalives_idle, tcp_keepalives_interval e tcp_keepalives_count* > Porém não entendi muito bem a aplicabilidade, até cheguei a testar o > tcp_keepalive_idle porém não observei nenhuma mudança. Nem haveria mesmo. Não tem nada a ver. keepalive é uma forma de manter conexões vivas no nível do protocolo TCP/IP. Conexões IDLE são conexões abertas pela aplicação e que estão simplesmente abertas e sem uso. O PostgreSQL *não* encerra essas conexões. E não há configuração para tal. > Busquei nas mensagens anteriores do fórum porém não achei a solução para > aplicar. 1) Arrume sua aplicação ou entenda como ela funciona; 2) Utilize um agregador de conexões; 3) URGENTE: atualize seu PostgreSQL. []s Flavio Henrique A. Gurgel Consultor e Instrutor 4Linux Tel: +55-11-2125-4747 www.4linux.com.br _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral