Dúvida JBoss no Linux

5 respostas
D

Temos um servidor com Mandriva Linux 2003, o JBoss versão 3.2.7 e o JDK 1.5.0_05 instalado em uma máquina multiprocessada com 2GB de memória. Nosso run.conf do JBoss está com a seguinte linha de configuração:

JAVA_OPTS="-server -Xms1536m -Xmx1536m -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=2"
Acontece que ao subirmos o serviço, e executarmos o comando free -m, verificamos que o servidor está com cerca de 600 MB de memória free, e após poucas horas de utilização já está com cerca de 49 MB de memória free, sendo que após isto mesmo sem ser utilizado, ele não libera memória. Gostaria de ver se alguém saberia o que pode estar ocorrendo ou se existe alguma configuração que pode ser feita ou modificada para resolver este problema.

5 Respostas

Luca

Olá

O problema deve estar no banco de dados. Monitore as conexões. Se for isto, não deixe de ler http://plentz.org/2007/04/21/connection-leak-paradise/

[]s
Luca

D

Valeu pela dica Luca, já estou analisando e testando o que me passastes. Obrigado! :thumbup:

P

A primeira tarefa é ver quem está pegando a memória (use o top ou equivalente).

Caso seja o java, note o seguinte: na configuração de memória, vc. está dizendo que a JVM pode alocar até ~1.5G(-Xmx). Mais: diz para alocar isto logo de cara (-Xms).

Em resumo, vc. ter apenas 49m free não quer dizer muita coisa, especialmente se o número ficar estável.

Outra coisa: o gerenciador de memória do Linux tentará usar a memória disponível como buffer/cache de disco, de forma a agilizar acessos. Veja se isto não está mascarando seus números.

Se estou falando grego, mande para a lista o resultado do free -m

D

Olá psevestre, segue abaixo como pedistes as linhas que aparecem no servidor a partir do comando free -m. Consegui ver agora a pouco no fórum que eu estava verificando a memória na linha errada, pois ao invés de 50 MB, nesta consulta eu tenho 254 MB livre. Se tiverem assim mesmo alguma dica de melhora de performance, agradeço.

[root@linap01 admin]# free -m
total used free shared buffers cached
Mem: 2027 1976 50 0 66 137
-/+ buffers/cache: 1772 254
Swap: 2047 1082 964

P

Olhando assim, de forma estática, não vejo problema. Vc. tem uma JVM que está “autorizada” a pegar 1.5G de memória. Ela pegou. O resto está para o resto do Linux.

A questão é se sua aplicação irá continuar a consumir memória e gerar exceções do tipo OutOfMemory, provável indicador de vazamentos de memória em sua aplicação.

Criado 26 de abril de 2007
Ultima resposta 3 de mai. de 2007
Respostas 5
Participantes 3