TOMCAT + HIBERNATE - processamento CPU dispara!

Olá.

estou subindo uma aplicacao para produção.

ela quando é realizado uma simples busca no sistema, o processamento do cpu dispara, algumas vezes chegando a 100%.

Isso é normal???

tenho medo de qdo muitos usuarios fazerem buscas ao mesmo tempo o Tomcat não aguente!

Como posso melhorar isso??

Att. Dirceu

qual a configuração da maquina? framework e etc… que estais usando?

Você pode verificar isso utilizando o JMeter para fazer teste de carga:

http://jakarta.apache.org/jmeter/index.html

Fernando Rosa

  1. Uma simples busca com o Hibernate pode alocar muitos objetos em memória, e com isso demandar muito processamento para paginação no S.O. - depende da quantidade de registros que a busca retorna. Procure limitar a quantidade de resultados de suas queries.

  2. Vc está esperando para iniciar a SessionFactory na primeira interação com o banco de dados (à la Singleton) ? Montar a SessionFactory é pesado mesmo, e o indicado é utilizar um ServletContextListener para isso.

  3. Registre seus JSPs no web.xml para que eles sejam compilados em tempo de deployment, e não em tempo de request

  4. Se a consulta é pesada mesmo, utilize blocos synchronized ou a API concurrent para limitar a quantidade de consultas simultâneas

Estou utilizando um Servidor Dedicado com processamento de 2GHz, memoria 1GB, onde so roda está aplicação
Frameworks: Hibernate, Spring, JSF, Acegi…

vou dar uma olhada no JMeter

Por enquanto no DB tem poucos objetos, mas no futuro deverá ter muitos objeto, ja q é um sistema de anuncios.
Atualmente não estou limitando a quantidade, vou limitar 100 objetos.

A principio não serão pesadas

Atenciosamente,
Dirceu Sobrinho

Se a aplicação está com problema de processamento eu não recomendaria usar o JMeter a princípio, e sim o JProfiler. Primeiro você tem que verificar o problema de processamento com uma ferramenta de profiler e depois de corrigir aí sim fazer teste de carga.

Pode ser que você esteja instanciando muitos objetos e o Garbage Collector esteja fazendo muitos full scans.

Não tem como adivinhar, por isso use as ferramentas.