Pessoal,
Alguem sabe me explicar como as coisas funcionam “por tras das cortinas” com a inicialização/funcionameto do Tomcat no Linux?
Seguinte, tenho um VPS com a memória limitada a 384 Mb. Bem, isso é mais que suficiente pra eu rodar todos os processos do servidor e mais algumas aplicações de pequeno e médio porte no Tomcat, porém, na inicialização o tomcat ele insiste em pegar toda a memória que eu tenho disponível e mais um pouco. O problema está nesse “mais um pouco”.
Pra quem não sabe como o VPS funciona, a grosso modo, é mais ou menos como um VMWare da da vida, um único servidor com vários “servidores virtuais”. Porém, alguns softwares de virtualização não mascaram a memória total do “servidor pai”, ou seja, minha memória está limitada a 384mb só que a JVM enxerga os 8 Gb do servidor. Meio confuso, mas é mesmo.
Bem, meu problema está na inicialização do Tomcat que inicializa a JVM que enxerga toda essa memória e tenta abocanhar boa parte dela. Oh, sim claro, existem os parametros limitadores de memória “Xms e Xmx”, e sim, eu estou utilizando eles, só que, parece que não adianta muito, o tomcat abre nada mais que 47 processos concorrentes ao mesmo tempo. abaixo um “ps -aux” após a inicialização do Tomcat, dei uma truncada pra não cobrir umas 2 páginas do forum:
root 6879 19.4 0.7 362932 62424 pts/0 S 07:45 0:04 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6880 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6881 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6882 0.1 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6883 0.1 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6884 0.1 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6885 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6886 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6887 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6888 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6889 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6890 18.3 0.7 362932 62424 pts/0 S 07:45 0:04 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6891 22.2 0.7 362932 62424 pts/0 S 07:45 0:05 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6892 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
root 6893 0.0 0.7 362932 62424 pts/0 S 07:45 0:00 /usr/local/java/jdk/bin/java -Xms64m -Xmx128m -Djava.util.logging.
Depois de iniciado, o Tomcat pega toda minha memória livre, nesse momento 230 Mb e mais uns 80 Mb adicionais.
Um detalhe, o tomcat está a zero, não tem nenhuma aplicação além das de exemplo dele rodando.
Bem, essa é minha dúvida, existe uma maneira de limitar esse monte de processo e memória utilizados pelo Tomcat?
PS. Estou usando o Tomcat 5.5.20 e JDK 1.5.0_09 num Debian GNU/Linux 3.1
Obrigado por qualquer ajuda.