[firebase-br] RES: Consumo de memória muito Alto (Não libera)
Wesley Oliveira
wesley em rgsystem.com.br
Qua Dez 4 17:14:56 -03 2013
Obrigado pela dica Moacir!
Infelizmente esse não foi o caso... Desinstalei o meu FB, baixei novamente a
versão mais recente (2.5.2.alguma coisa) e instalei, tanto em modo
ClassicServer quanto em SuperClassic. No modo SuperClassic ele consumiu
menos memória e processamento que nas outras versões, mas continua com
problema de ficar com trem garrado mesmo depois de destruir tudo...
Analisando um pouco melhor, não é só quando eu finalizo o servidor da
aplicação. Ao fazer Logoff também descarrega a memória (claro, mata a
conexão...)
Pra fins de informação, esses são os stats do banco que estou usando pra
teste:
Tamanho: 223MB
PageSize: 4096
SQL Dialect: 3
Sweep: 20000
ODS: 11.2
Forced Writes: True
/********
Buffers
Pages: 75
KB: 300
Att.
Wesley Oliveira
Programador de Sistemas de Informação
RG System Informática
Fone: +55 (27) 3727-1127
Celular: +55 (27) 99606-0038
-----Mensagem original-----
De: Moacir - Softin Sistemas [mailto:moacir em softin.com.br]
Enviada em: quarta-feira, 4 de dezembro de 2013 16:08
Para: 'Wesley Oliveira'
Assunto: ENC: [firebase-br] Consumo de memória muito Alto (Não libera)
Wesley,
Este é o comportamento do FB na versão SuperServer(SS) 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 SS 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