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

Responder a