Caso não exista um pool, implemente você mesmo, o pgbouncer pode lhe ser
útil.
http://pgfoundry.org/projects/pgbouncer/
Em 14 de agosto de 2012 17:55, Flavio Henrique Araque Gurgel
fla...@4linux.com.br escreveu:
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
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral