Limitar memória/processos do Tomcat no Linux

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. :frowning:

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.