Meu sistema consome muita memoria!

Olá! Meu nome é Hugo e sou novo no forum. Sou analista de sistemas numa consultoria em São Paulo.

Nós estamos desenvolvendo um sistema web de pesquisa/cadastro que fica no nosso servidor na Embratel. Um dos principais recursos é q ele permite fazer download e upload de arquivos. Só que ele está consumindo muito processamento e swap, fazendo com que o Tomcat seja derrubado frequentemente…as vezes até o servidor trava! É difícil o tomcat permanecer startado por mais de 2 dias ininterruptamente…

Será que o problema está na arquitetura do sistema? Pq nosso servidor até que é robusto: um Xeon de 2.4Ghz, 3GB de ram, HD SCSI etc. E a Embratel nos oferece um link sem limite de largura de banda.

Nosso sistema utiliza uma framework proprietária, baseada no Struts. Utiliza javaIO para acessar arquivos. Penso que o problema possa estar ai, pq ja ouvi dizer que o javaIO requer bastante processamento. Mudar para javaNIO seria interessante?

Utilizamos: Windows Server 2003, Tomcat5 e mySQL5. Nesse momento o uso de mem. virtual está em 8,5GB(no limite), o uso da CPU chega a alcançar picos de 100%, o tomcat está consumindo mais de 800MB de mem e o Mysql consome quase 200MB de mem.

Não era para o sistema ser tão pesado assim. Vcs podem me dar alguma dica?

Grato

Difícil apontar um problema na sua aplicação só com sua descrição. Mas você já pensou em usar um profiler para encontrar onde estão seus problemas?

O problema pode estar no upload. Para testar isso, experimente instalar o seu sistema em uma máquina de desenvolvimento, e efetuar um monte de uploadsn (de preferência com arquivos grandes). Se a memória ocupada estiver crescendo sem limite, há algum problema com o seu upload. (A memória usada não está sendo liberada por algum motivo).

Java NIO não dá muita diferença se você está lendo byte por byte em vez de ler usando um array de bytes (buffer) :stuck_out_tongue:

Boas Hugo!!

Então, aqui na empresa onde trabalho está sendo desenvolvido uma versão do nosso sistema antigo(Swing) para Web por uma empresa terceirizada. A aplicação está implantada em uma de nossas unidades e no ínicio tivemos um problema semelhante ao seu, o servidor tomcat travava, eram necessários vários reboots no mesmo dia.
Essa empresa analisando os logs gerados pelo tomcat, percebeu que era necessário reconfigurar um parametro que informa ao TomCat o quanto de memória ele poderá usar…infelizmente eu não sei o nome desse, mas tenta ver algo do tipo.

Legal gente! Vou estudar as opções de vocês e então retornarei

Muito obrigado por enquanto!