Mais de uma JVM para gerenciar melhor memoria

7 respostas
pcalcado

Seguinte,

Estou com um problemã num software que tenho que dar suporte/manutenção e que [pra variar] os desenvovledores originais sumiram.

Esse software gera uns relatórios muito grandes que estão consumindo a memória. O servidor possui 2 Xeon com hyperthreading que fingem ser 4, não consome muita CPU. A memória está em 1.7GB.

Em momentos de pico, a máquina dá OutOfMemory, consumindo toda a memória e depois entrando num consumo eterno de CPU. Fazendo um tuning no GC, consegui diminuir esse burst de CPU e a máquina não senta mais, agora ela se recupera após uma dezena de OutOfMemory, mas a performance ainda está sofrível.

Uma outra versão deve ser iniciada em algum tempo, mas por enquanto o sofwtare não pode ter mudanças bruscas. Uma solução apresentada foi dividir o processamento em duas JVMs com 1GB cada. Reza a lenda interna que a JVM da Sun (BTW: 1.4.2_05) não consegue gerenciar bem mais que 1GB.

A aplicação roda um JBoss 3.2.3 com zilhões de EJBs e Tomcat 4.qualquercoisa. Essa é uma das otimizações que vamos fazer, empacotando tudo num patch.

Perguntas:

1 - É verdade que a JVM da Sun se embanana com tanta memória? Lembre que a carga é grande.

2 - Duas JVMs num servidor podem ajudar?

3 - JBoss clusterizado faz replicação de HTTP Session?

4 - Esse relatório é um PDF em array de bytes jogado no cliente de dentro do Servlet, colocar isso num arquivo em disco e redirecionar ia ser mais fácil? Imagino que a bufferização e outras coisitas de I/O possam ajudar, mas será que isso dá um gás?

No momento estou conduzindo uma sessão de profiling no aplicativo, para identificar algumas informações a mais.

Alguém?!?

[]s

7 Respostas

T
 
pcalcado

Thingol, acho que fiz alguma besteira com seu comentário (aidna bem que foi na respsota a minha pergutna ) :oops:

É linux red hat 7.3 kernel 2.4.28

:roll: :oops: :roll: :oops: :roll: :oops:

T

É isso que dá ser moderador… Brincadeirinha

  • Bom, já que é Linux eu não sei como ele se comporta com tanta memória; só sei o caso do Windows (que tem uma limitação para -Xmx).
  • E de qualquer maneira, se puder gravar em arquivo temporário, sempre alivia um pouco.
cv1

Uma otimizacao que pode nao custar taaaaao caro eh atualizar o JBoss pra versao mais recente das 3.x (se vc ja ta usando a ultima, desconsidere). Depois, profiling nele. Com certeza tem vazamento de memoria pra tudo quanto eh lado :wink:

Qual profiler vc ta usando? Eu recomendo descolar uma licenca do JProfiler, mto joia :slight_smile:

pcalcado

Nem rola. Pra voce ter noção, o sistema é tããããããão acoplado com o filho do Fleury versão 3.2.3 que não funciona em nenhuma outra da série 3.2.x :cry:

A gente tá usando o orkut, ops, YourKit aqui.

[]s

T

JBoss 3.2.3 (que não suporta o JDK 5.0):

  • Puxa vida, então nem dá para tentar usar o jconsole do JDK 5.0; precisa de uma solução paga…
pcalcado

cv,

Arrumei um orçamento extra pro profiler. Vamos pegar uns demos do JProfiler, o Yogurte é bom mas não gosto muito do jeito dele trabalhar, apesar de rodar redondo em máquinas Linux. Alguma outra sugestãod e profiler pago para testar?

[]s

Criado 6 de janeiro de 2005
Ultima resposta 7 de jan. de 2005
Respostas 7
Participantes 3