Uso de cpu do tomcat

Pessoal, quando inicio o tomcat da minha aplicação ele já começa utilizando 50% de cpu, as vezes cai para 27% , mas a maioria das vezes, ele começa com 50% de cpu. A memória que a jvm usa não fica baixa, a cpu que me preocupa.
Alguém sabe se isso é normal??
Hoje tive um problema, o tomcat estava utilizando 99% da cpu do servidor, quando fui verificar no tomcat manager , havia 5 threads presas há 27 horas. Estou verificando para ver se não é um problema do meu código, não acho que seja loop infinito, pois já debuguei um bocado e ainda não achei.
Alguém tem alguma idéia do que pode ser?
O servidor é um Pentium D, 1GB de Ram.
Tomcat 5.030
Uso Hibernate 3.2
Struts 1.29

Outra pergunta, emrelação a estas threads presas, tem como matar elas automaticamente depois de um tempo?
Vlw
Abraços

Em um Pentium D, se você vir que ele usa “50% da CPU”, é que há uma única thread que gasta 100% de uma CPU.
Se o programa gasta 99% de CPU, então é que há várias threads gastando o que puderem em CPU.

Eu sei, isso que acho estranho, aparentemente não existe loop infinito que esteja provocando isso.
Alguem tem alguma idéia? Tem como matar as threads que ficaram presas depois de algum tempo automaticamente?
abraços

Hum, isso é realmente um problema.

a) Não dá para matar uma thread assim, sem mais nem menos. (Você poderia até tentar criar uma pequena servlet que listasse periodicamente as threads em execução, avaliasse o tempo de execução de cada uma e visse se passou de um determinado patamar - por exemplo, o tempo real foi de 5 minutos, e o de CPU gasto foi de 4.5, então provavelmente essa thread está com problemas de processamento. Mas isso não é muito confiável.)
b) Que tal usar o velho e bom método do titio Bill Gates, enquanto não descobrir o que está ocorrendo de errado no seu Tomcat? (Você sabe, reiniciar o Tomcat uma vez por dia :stuck_out_tongue: )
c) Não sei se pode ser alguma coisa com seu driver de banco de dados. às vezes problemas esquisitos ocorrem com versões problemáticas do driver. Por exemplo, os drivers da Oracle normalmente são bem ruinzinhos, só melhoraram faz pouco tempo - ou seja, mesmo que você esteja usando o Oracle 8, você poderia usar o driver do Oracle 10g sem problemas.

Vou continuar tentando resolver o problema, se alguem tiver mais alguma ideia, agradeço.
Por enquanto quando for necessário vou reiniciar o tomcat :slight_smile: e quando achar a solução posto aqui.
vlw

Espero que você esteja usando alguma ferramenta de profiler para determinar quais objetos estão consumindo mais CPU. Acho pouco produtivo ficar “chutando” quais classes tem problema de consumo de CPU. Tinha uns posts no GUJ sobre ferramentas de monitoramento exclusivas para Tomcat.
Lista de profilers open source

Tem também o JProbe e o Optmizeit.

Qual Sistema Operacional você está usando???

Não estou usando profiler não, estou dando uma olhada no glassbox, mas vou ver estes outros que voce mandou oyama.
O sistema operacional do servidor é windows server 2003.

Alguém sabe se o profiler diminui o desempenho da aplicação?
Estava utilizando o driver jdbc 3.xxx do mysql com o hibernate, agora mudei para o driver 5.0. Será que o driver pode ter influencia?
vlw
abraços