Bom dia a todos!
Estou com alguns problemas e não tenho muitas respostas.Seguinte tenho uma aplicação de chamadas de senhas rodando,que recentemente passou por um processo de otimização de performance com DTOs em XML e melhorias do código.Porém em um cliente especifico a aplicação apresenta muita lentidão e após alguns minutos travamento,também apresenta erros bizarros,erros que não poderiam acontecer que a unica resposta é pela baixa performance.Segue alguns Dados:
-O servidor Tomcat possui 5 aplicações relativamente grandes em uma única porta.Um servidor de 8GB de 32 bits suportaria isto?
-O servidor Tomcat em poucos minutos chega a 6GB de uso de memória do servidor. Isso é normal?
-Descartado o travamento do sistema por out of memory do flash player,pois não é apresentado a exclamação cinza(Grey Circle of death);
-Performance do banco dentro dos padrões;
-Ping realizado entre maquina cliente e servidor mostrou resposta de 1ms.Muito bom.
Especificações do Servidor:
-Hardware
4 processadores
com 8gb de ram
uma maquina virtual
é uma IBM em cluster
A pergunta é,um tomcat que chega a 6gb de uso de memória é considerado um valor normal?um servidor de 64bits suportaria 5 aplicações pesadas em uma unica porta?As configurações do Tomcat estao adequadas?Praticamente descartei problema da aplicação.Alguém tem alguma dica,idéia ou norte para dar?
O que é 32 bits, o SO ? A JVM ? O Tomcat ? De qualquer maneira, para fazer uso decente dessa quantidade de memória, o ideal é utilizar todos como 64 bits.
Depende. Se ele está configurado para iniciar usando essa quantidade de memória, sim. Se não, é melhor usar um profiler para descobrir o que está acontecendo.
O que o Flash tem a ver com isso?? :shock:
OK.
Como eu disse, se seu Tomcat chega a 6GB de uso de memória, sendo que está configurado para usar 2GB (-Xms2g -Xmx2g), alguma coisa tem de muito errado. Sugiro se conectar, via JMX ou qualquer coisa do tipo, à JVM para descobrir o que acontece. Utilize o JProfiler , ou outra ferramenta qualquer de profiling, + um jconsole da vida (já vem com a JVM) para descobrir quais são as configurações reais que o Tomcat está assumindo.
É bastante comum que uma aplicação “trave” quando chegue no final do uso de memória e precise fazer GC em cima de quase tudo. Ou seja, seria bom dar uma conferida, também, pra ver se suas configurações de GC são mesmo ideais para as características da sua aplicação. Na verdade, eu duvido que precise mexer, porque as configurações nesse sentido estão boas. Mas como o parâmetro de memória já não está sendo respeitado, é preciso conferir se os de GC também não estão.