[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