AppServer Consumindo muita memória. Conexão Fantasma
Estou com um problema no meu appserver que no início do dia está consumindo pouca memória, mas no final do dia, está consumindo muita memória, fica lento e, às vezes, o firebird recusa a nova conexão. Eu achei que se tratava de "conexão fantasma", mas eu utilizo KeepAlive(TDSTCPServerTransport.KeepAliveEnablement = kaEnabled). Eu só tenho um único ServerMethod, e nele um TSqlConection para firebird. O LifeCyde = Session, logo uma sessão para casa appclient que conecta. Na minha concepção, não deveria dar problemas, pois se um appclient desconectar forçadamente (caiu a internet), dentro de instantes, o KeepAlive
deveria destruir tudo que está criado naquela Session, mas na prática o tamanho do appserver na memória só aumenta. Se eu mudar o LifeCyde = Server, a minha conexão com banco de dados vai ser única e vai acabar conflitando o que um appclient com outro. Fiz um pequeno teste, em outra aplicação, tentando um appserver o LifeCyde = Server e dois appclient ao mesmo tempo, fazendo uma consulta no banco, e dá erro.
Para amenizar o problema, todos os dias à noite, o serviço appserver é reiniciado, aí no outro dia começa tudo novamente. E à tarde começa o pico da lentidão e crescimento do seu tamanho na memória do servidor.
Queria saber se alguém poderia me ajudar neste problema que tenho há muito tempo, uns 3 anos praticamente.
deveria destruir tudo que está criado naquela Session, mas na prática o tamanho do appserver na memória só aumenta. Se eu mudar o LifeCyde = Server, a minha conexão com banco de dados vai ser única e vai acabar conflitando o que um appclient com outro. Fiz um pequeno teste, em outra aplicação, tentando um appserver o LifeCyde = Server e dois appclient ao mesmo tempo, fazendo uma consulta no banco, e dá erro.
Para amenizar o problema, todos os dias à noite, o serviço appserver é reiniciado, aí no outro dia começa tudo novamente. E à tarde começa o pico da lentidão e crescimento do seu tamanho na memória do servidor.
Queria saber se alguém poderia me ajudar neste problema que tenho há muito tempo, uns 3 anos praticamente.
Alessandro Zanela
Curtidas 0
Respostas
Marcos Saffran
25/10/2013
Alessandro,
recentemente fiz um programa que a cada segundo verificava no banco de dados mysql, através de um timer, informações sobre diversas tabelas.
Esse programa estava aumentando o uso da memória a cada segundo, então verifiquei que apesar de fechar todas as query elas continuavam na memória, para resolver coloquei, depois do último close do meu timer um destroy e resolveu o meu problema.
Não sei como está o seu programa, mas espero que a solução do meu problema possa ajudá-lo a resolver o seu.
recentemente fiz um programa que a cada segundo verificava no banco de dados mysql, através de um timer, informações sobre diversas tabelas.
Esse programa estava aumentando o uso da memória a cada segundo, então verifiquei que apesar de fechar todas as query elas continuavam na memória, para resolver coloquei, depois do último close do meu timer um destroy e resolveu o meu problema.
Não sei como está o seu programa, mas espero que a solução do meu problema possa ajudá-lo a resolver o seu.
GOSTEI 0