[firebase-br] RES: Consumo de memória muito Alto (Não libera)
Moacir - Softin Sistemas
moacir em softin.com.br
Qua Dez 4 15:57:29 -03 2013
Wesley,
Este é o comportamento do FB na versão SuperServer pois ele tem um cache
compartilhado com todas as conexões. De uns 4 anos pra cá sempre instalo
a versão ClassicServer(CS) e o resultado está sendo muito melhor, pois cada
conexão tem seu cache e quando o mesmo é finalizado, a conexão fecha e,
consequentemente, cai o consumo de memória. Nas minhas aplicações, mudança
da versão do SP para CS foi acertada. Cumpre ressalvar que a versão CS
necessita mais de memória porém, vejo muitos ganhos na performance.
Att,
Moacir
-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Wesley Oliveira
Enviada em: quarta-feira, 4 de dezembro de 2013 14:53
Para: FireBase
Assunto: [firebase-br] Consumo de memória muito Alto (Não libera)
Olá pessoal!
Correndo o risco de parecer bobo, mas uma questão está me perturbando essa
semana:
Nosso sistema é baseado num Servidor DataSnap com Firebird 2.5 SuperServer.
Ao gerar os boletins dos alunos de uma turma, por exemplo, o sistema dispara
várias funções entre servidor/banco de dados. Algumas stored procedures são
executadas, tabelas temporárias são alimentadas e consultadas pra depois
serem esvaziadas e por aí vai. Tudo comandado pelo servidor da aplicação.
Ao iniciar o processo, o FB está consumindo 22MB de memória e, para uma
turma de 30 alunos por exemplo, ao final da execução, o consumo está
beirando os 250MB!
Sim, são rotinas pesadas, vários registros pra cada aluno em diversas
tabelas, SUMS, COUNTS, tem de tudo nessa rotina...
Aí eu penso: Quando acabar, toda essa memória será liberada, certo?
Errado... só libera quando encerra o servidor do sistema.... E nesse fim de
ano, alguns clientes estão gerando os boletins de TODAS as turmas várias
vezes por dia... Imagina o tanto que isso tá consumindo dos pobres
servidores, certo?
Então eu pergunto: Por que isso acontece?
Eu utilizo para as consultas ao BD o TDBXCommand com TDBXReader do Delphi e,
sempre que um command ou um reader é criado, é destruído ao final da
“participação” dele na rotina. Já dei Free, FreeAndNil e nada libera a
memória...
Alguma boa alma poderia me dar alguma dica?
Wesley Oliveira
Programador de Sistemas de Informação
RG System Informática
Fone: +55 (27) 3727-1127
Celular: +55 (27) 99606-0038
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista