DataSnap, Firebird e AWS-EC2
01/08/2023
0
Tenho um servidor Firedac (Desenvolvido com RAD SUDIO 11) com Firebird 3, instalado numa instância EC2 com Windows Server 2022, na AWS.
Meus aplicativos Clientes (DataSnap - Móvel e Desktop), estão acessando corretamente o Banco de Dados no servidor e funcionando perfeitamente.
Só um detalhe, não está do jeito que eu quero, e não consigo resolver.
O detalhe é o seguinte:
Se eu NÃO der um REFRESH em qualquer ClientDataSet de 10 em 10 segundos, minha conexão cai e o Cliente para de se comunicar com o Servidor, sendo necessário fechar o sistema e abrir e me logar, novamente. De qualquer forma, eu preciso do refresh para atualizar os painéis de dados de monitoramento de 10 em 10 segundos, mas quando estou fazendo a Edição ou a Inserção de um registro em qualquer tabela, um refresh de 10 em 10 segundos, mesmo que em uma tabela diferente da que está sendo editada, atrapalha, e se eu não der o refresh, e a conexão cai.
Pergunta: Alguém sabe como manter a conexão do Cliente DATASNAP com o Servidor FIREDAC por um tempo maior, sem ficar dando REFRESHs contínuos?
Meus aplicativos Clientes (DataSnap - Móvel e Desktop), estão acessando corretamente o Banco de Dados no servidor e funcionando perfeitamente.
Só um detalhe, não está do jeito que eu quero, e não consigo resolver.
O detalhe é o seguinte:
Se eu NÃO der um REFRESH em qualquer ClientDataSet de 10 em 10 segundos, minha conexão cai e o Cliente para de se comunicar com o Servidor, sendo necessário fechar o sistema e abrir e me logar, novamente. De qualquer forma, eu preciso do refresh para atualizar os painéis de dados de monitoramento de 10 em 10 segundos, mas quando estou fazendo a Edição ou a Inserção de um registro em qualquer tabela, um refresh de 10 em 10 segundos, mesmo que em uma tabela diferente da que está sendo editada, atrapalha, e se eu não der o refresh, e a conexão cai.
Pergunta: Alguém sabe como manter a conexão do Cliente DATASNAP com o Servidor FIREDAC por um tempo maior, sem ficar dando REFRESHs contínuos?
Gustavo Giovanini
Curtir tópico
+ 0
Responder
Post mais votado
01/08/2023
Eu não conheço o Firebird, mas existem vários fatores que podem estar encerrando as conexões e a origem pode ser do SO ou do próprio banco.
É possível que, por se tratar de uma instância EC2 sendo acessada remotamente, haja alguma configuração específica para encerrar as conexões ativas depois de um determinado tempo. Mas também pode ser uma configuração no banco, para encerrar sessões inativas.
Acredito que seja mais provável que o problema, neste caso, esteja no banco, já que os timeouts de SO geralmente são maiores que 1 min.
O banco pode estar configurado para encerrar sessões inativas ou pode haver um job que as encerre.
Existe um parâmetro no banco que permite controlar o tempo que uma sessão pode ficar inativa. Dê uma olhada em: https://firebirdsql.org/file/documentation/chunk/en/refdocs/fblangref40/fblangref40-management-timeouts.html
Você também pode olhar nos logs do banco, em busca de alguma mensagem que indique o motivo da conexão estar sendo encerrada.
Tanto o SO como o banco podem enviar pacotes vazios, apenas para manter a conexão ativa. No SO, trata-se da configuração do Keep Alive. No banco firebird parece que tem um parâmetro que permite enviar pacotes em branco de tempos em tempos, para evitar a desconexão.
É possível que, por se tratar de uma instância EC2 sendo acessada remotamente, haja alguma configuração específica para encerrar as conexões ativas depois de um determinado tempo. Mas também pode ser uma configuração no banco, para encerrar sessões inativas.
Acredito que seja mais provável que o problema, neste caso, esteja no banco, já que os timeouts de SO geralmente são maiores que 1 min.
O banco pode estar configurado para encerrar sessões inativas ou pode haver um job que as encerre.
Existe um parâmetro no banco que permite controlar o tempo que uma sessão pode ficar inativa. Dê uma olhada em: https://firebirdsql.org/file/documentation/chunk/en/refdocs/fblangref40/fblangref40-management-timeouts.html
Você também pode olhar nos logs do banco, em busca de alguma mensagem que indique o motivo da conexão estar sendo encerrada.
Tanto o SO como o banco podem enviar pacotes vazios, apenas para manter a conexão ativa. No SO, trata-se da configuração do Keep Alive. No banco firebird parece que tem um parâmetro que permite enviar pacotes em branco de tempos em tempos, para evitar a desconexão.
Arthur Heinrich
Responder
Clique aqui para fazer login e interagir na Comunidade :)