Pessoal estou tendo problemas de Serviço indisponivel, e o pessoal do suporte diz que o java esta abrindo muitos processos cerca de 20 e consorme muita memoria, e que o problema era minha aplicação que abria muitos processos, não estou fazendo nada de mais na aplicação, uso Hibernate 3 e Mentaway e só nada mais. Alguém sabe oque pode ser?
Porque o tomcat abre muitos processos?
7 Respostas
Olá
Cheiro de memory leak ou connection leak.
Monitore suas threads com JConsole, use debug, use um profiler, verifique as sessões do hibernate (e do mentawai também).
Veja também como a base de dados se comporta.
E principalmente, perceba a importância de usar logs e alguns asserts espalhados pelo código para salvar a pele em casos como este.
Ah, mais 2 sugestões:
- Experimente usar o jetty e verifique se o problema persiste
- Caso o tomcat esteja conectado ao apache, experimente acessar diretamente.
E o artigo abaixo talvez tenha alguma coisa interessante:
http://today.java.net/lpt/a/294
[]s
Luca
Registrei um comportamento estranho, assim que startei o tomcat o jconsole registrou 25mb, sem usar o sistema vi que o jconsole gera um grafico crescente foi até 256mb e quando dei Force GC caiu para 40mb e continuou com o grafico crescente sem usar o sistema, oque será, alguem ja viu um comportamento desse tipo?
No modo debug do eclipse isto é normal?
[img]http://www.maringaturismoweb.com.br/adm_config/processos.JPG[/img]
<mapping package="br.com.maringa.requisicao.pojo"/>
<mapping class="br.com.maringa.requisicao.pojo.Clienteportal"/>
<mapping class="br.com.maringa.requisicao.pojo.Agencia"/>
<mapping class="br.com.maringa.requisicao.pojo.EmissoresAgencia"/>
<mapping class="br.com.maringa.requisicao.pojo.Aereo"/>
<mapping class="br.com.maringa.requisicao.pojo.Aereosol"/>
<mapping class="br.com.maringa.requisicao.pojo.Carro"/>
<mapping class="br.com.maringa.requisicao.pojo.Carrosol"/>
<mapping class="br.com.maringa.requisicao.pojo.Centrocusto"/>
<mapping class="br.com.maringa.requisicao.pojo.Hotel"/>
<mapping class="br.com.maringa.requisicao.pojo.Hotelsol"/>
<mapping class="br.com.maringa.requisicao.pojo.Outro"/>
<mapping class="br.com.maringa.requisicao.pojo.Outrosol"/>
<mapping class="br.com.maringa.requisicao.pojo.Perfil"/>
<mapping class="br.com.maringa.requisicao.pojo.Solicitacao"/>
<mapping class="br.com.maringa.requisicao.pojo.Usuario"/>
<mapping class="br.com.maringa.requisicao.pojo.Usuariorequisicao"/>
<mapping class="br.com.maringa.requisicao.pojo.Rateio"/>
<mapping class="br.com.maringa.requisicao.pojo.Status"/>
<mapping class="br.com.maringa.requisicao.pojo.Destino"/>
<mapping class="br.com.maringa.requisicao.pojo.Aprovadorescc"/>
<mapping class="br.com.maringa.requisicao.pojo.Solicitantescc"/>
<mapping class="br.com.maringa.requisicao.pojo.Orcamento"/>
<mapping class="br.com.maringa.requisicao.pojo.Projeto"/>
<mapping class="br.com.maringa.requisicao.pojo.Grupocliente"/>
<mapping class="br.com.maringa.requisicao.pojo.Aprovadoresprojeto"/>
Olá
Já passou um profiler? Ele mostrou algo estranho?
Quando repetiu os testes usando Jetty apareceram os mesmos erros?
Quando você foi na lista de discussão do tomcat, achou mais alguém com o mesmo problema nesta versão (?) de tomcat que está usando?
[]s
Luca
Removi o tomcat5.5.20 e instalei denovo sem a aplicação puro, rodei ele e verifiquei com o jconsole, para minha supresa ele cria os 25 processos do mesmo jeito? ai instalei a versao do tomcat 602 e não criou nenhum processo a mais, estranho isso, é um bug ou é normal assim mesmo, quem usar o tomcat 5.5 já verificou se ele cria mesmo esses 25 processos da tread ContainerBackgroundProcessor?
Dê uma olhada no arquivo server.xml de sua instalação do Tomcat. Você vai ver os parämetros maxThreads, minSpareThreads e maxSpareThreads. Você pode consultar esses parämetros na documentação do Tomcat e ir modificando até tornar sua aplicação mais estável.
Um exemplo do trecho de server.xml que contém esses parämetros:
Olá
Bem interessante as suas observações.
Fui lá no server.xml e verifiquei que há um parâmetro minSpareThreads=“25”
O tomcat deve criar estas threads esperando usá-las quando carregado.
Mas saber disto não resolve seu problema que ainda acho que é de memory leak (ou connection leak) da aplicação.
De toda a forma, tenho um outro conselho:
As últimas versões são: 5.5.23 e 6.0.13
A gente sempre deve usar as últimas versões porque muitas vezes há falhas de segurança.
[]s
Luca