Boa tarde pessoal, espero que todos tenham tido um Natal e Ano Novo onde a esperança tenha se renovado e que muito realizemos neste 2010.

Bem, não pude deixar de notar que o colega esta passando por um problema muito semelhante (se não igual) ao que venho tendo em algumas situações. O caso é muito semelhante: existe um servidor cujo no-break segura e máquinas clientes que em maior ou menor número ficam sem energia. A conexão criada por esses clientes permanece ativa mesmo após a queda das estações por falta de energia. Quando a energia volta os usuários estabelecem novas conexões e dependendo do max_connections, do número de estações afetadas pelo problema de energia e do número de vezes que o problema ocorre e pimba temos um servidor recusando conexões.

Olhando o log do banco existem diversos avisos das tentativas que o banco fez de entregar resultados para estações que não estão mais na outra pronta da conexão, mas nem assim a conexão é descartada. A saída tem sido aumentar o max_connection para 2, 3 ou 4 vezes o número necessário e dependendo do grau de pessimismo que se esteja no momento.

Acredito que alguém já tenha passado por isto e que tenha achado uma forma "elegante" de resolver o caso.

Considerações serão bem vindas,

Abraços,

Sergio Medeiros Santi


Em 31/12/2009 09:52, Fabrízio de Royes Mello escreveu:
Pessoal,

Estou sofrendo com um problema de algumas conexões ficarem ativas com o PostgreSQL após uma queda de energia onde todos os clientes foram desligados e o servidor, por estar ligado a um nobreak não caiu, e com isso ao ser restabelecida a energia elétrica (o servidor não foi reiniciado) as estações começam a conectar novamente, só que como já tem conexões ativas (que ficaram perdidas após a queda de energia) acaba estourando o max_connections com as novas conexões...

Diante disso gostaria de trocar algumas idéias (ou se existe uma solução pronta que eu desconheça fico agradecido) pois pensei em criar algum script que verifique o client_addr e o client_port da pg_stat_activity e verificar o status do socket no sistema operacional com o "netstat", e caso ele não esteja como "ESTABELECIDO" efetuar a eliminacao do processo...

Essa é uma alternativa viável ou existe alguma forma mais elegante de contornar isso??

Sistema Operacional: Windows 2003
Versão do PostgreSQL: 8.2.14

--
Fabrízio de Royes Mello
>> Blog sobre TI: http://fabriziomello.blogspot.com
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

-- 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a