none
Perdendo sessão/conexão com postgresql no acesso remoto.

    Pergunta

  • Estou tendo um problema com a conxão remota ao postgres que se encontra em uma maquina linux CENTOS. A situação é a seguinte:

    Faço a conexão por meio de pgadmin ao banco que está no em uma maquina linux no azure, porem tenho que ficar reconectando varias vezes o que torna-se impossível a utilização. HELP!!!!


    sexta-feira, 18 de julho de 2014 06:38

Respostas

  • AUTO RESPOSTA :

    Conforme explicação do suporte da microsoft o azure, 
    Depois de um tempo idle (sem troca de dados) em que provavelmente o cliente local não estava executando nenhuma query o cliente tenta retomar a conexão (após 6 minutos) e então temos o erro da sessão expirada.
    Isso acontece devido ao fato que o nosso load balancer externo (que serve ao DNS XXXX.cloudapp.net) possui um timeout de sessão TCP de 4 minutos.
    Esse tempo de timeout é padrão e não pode ser alterado. O motivo da aplicação cliente não saber que a conexão foi encerrada é porque nosso load balancer é de nível 4 (TCP) e o tráfego entre a aplicação cliente e o servidor Postgresql acontece em uma camada superior da rede. Por isso quando a sessão é terminada não há avisos para o servidor ou a aplicação cliente.
    A forma de contornar essa situação é não deixar a conexão inativa por mais de 4 minutos. Uma das formas é implementar o conceito de Keep-alive no código da aplicação que manda dados a cada período determinado para manter a conexão ativa.
    Como não temos acesso ao código do “pgadmin” não podemos alterar o seu código. Mas a própria página de suporte do pgadmin dá uma solução que é configurar um túnel SSH para trafegar os dados entre o cliente pgadmin e o servidor PostgreSQL.

    Obrigado pela ajuda Eduardo e Alan - Equipe de TI.

    • Marcado como Resposta Marcos SJ sexta-feira, 23 de outubro de 2015 18:19
    sábado, 26 de julho de 2014 14:16