5 Replies Latest reply on Jul 17, 2013 2:43 PM by claudio4j

    Memória JVM

    william.landim

      Boa tarde galera beleza?

      Estou migrando para um servidor novo e gostaria de uma recomendação para configurar as memorias(PermGen, xms, etc...) pra minha aplicação JavaEE.


      Minhas configurações atuais.:

      JAVA_OPTS="-server -Xms1024m -Xmx6144m -XX:PermSize=512m -XX:MaxPermSize=1024m -Duser.timezone=Brazil/East"

       


      O servidor conta com 64g de memória, e 4 processadores de 12 núcleos,

      servidor de aplicação é o jboss 4.2.


      Desde já agradeço,

        • 1. Re: Memória JVM
          adrianoschmidt

          Oi William,

           

          Talvez alguém aqui na comunidade possa te explicar melhor que eu, mas vou tentar..

           

          Essas configurações variam muito a cada caso, para saber a melhor configuração a ser escolhida precisaríamos entender que aplicações rodarão, o que elas fazem, que tecnologias utilizam, precisaríamos saber o número de acessos.. etc..

           

          tudo isso para sabermos que recursos computacionais serão usados, se será usado muito heap ou muito permGen..

           

          o ideal é realizar testes de performance utilizando jmeter, jconsole, visualvm... e verificar qual a melhor configuração..

           

          nem sempre configurar um valor alto é o ideal, se você colocar um xmx muito alto, o garbage collector pode demorar para rodar e quando rodar vai levar muito tempo (o que pode causar perda de perfomance neste momento)

           

          só uma curiosidade.. você está no jboss 4.2 e vai continuar nesta versão, certo? só vai mudar a máquina? isso?

           

          abraço!

          Adriano Schmidt

          http://www.localhost8080.com.br

          1 of 1 people found this helpful
          • 2. Re: Memória JVM
            rimolive

            Uma coisa eu já posso adiantar: PermGen de 1GB é extremamente alto. Sugiro um máximo de 512MB.

             

            Além disso, seu Xms e Xmx possui uma variação muito grande. Se a JVM precisar extender ou diminuir de tamanho, isso pode prejudicar a performance da aplicação como um todo.

            1 of 1 people found this helpful
            • 3. Re: Memória JVM
              mauriciomag

              Oi William,

               

              Como os nossos colegas acima disseram, não existe um configuração especifica pois isso pode variar conforme a sua aplicação. Então o ideal é verificar como a sua aplicação irá se comportar utilizando determinadas configurações e ir realizando os ajustes.

               

              Uma coisa que posso adiantar é que se sua Heap (Xms e Xmx)  for muito grande a sua JVM pode sofrer um certo tempo de pausa causada pelo Garbage Collector. Sendo assim acredito que Heaps menores são mais performáticas.

               

              Aqui tem dois artigos bem legais:

               

               

              Qualquer dúvida sobre a configuração ou problemas ou se quiser saber mais detalhes é só perguntar.

               

              Abs

              • 4. Re: Memória JVM
                william.landim

                Obrigado pelas respostas,

                 

                respondendo ao Adriano esta aplicação está nessa versão de jboss devido ser legado,

                e só vamos mudar o servidor mesmo.

                 

                Vou seguir seu conselho ai Ricardo e abaixar o PermGen, e deixar o Xmx e Xms iguais,

                não sei com quanto ainda.

                 

                Valew pelas dicas ai, vou dar uma lida nos artigos que o Mauricio passou e fazer

                uns testes com essas ferramentas,acho que é o ideal mesmo.

                 

                Abraços,

                William Landim

                • 5. Re: Memória JVM
                  claudio4j

                  Oi William, no servidor antigo, as configurações de memória davam conta ? Ocorriam erros de falta de memória ? Caso sim, então aumente a memória a cada 2 GB e acompanhe se o servidor funciona de acordo com o esperado.

                   

                  O servidor (máquina) é dedicado apenas para o jboss ? Se não, então é necessário fatiar alocação de memória de acordo com os serviços que rodam nele.

                   

                  Caso as configurações de memória aumentem muito, é necessário investigar o que causa o consumo exagerado de memória, pode ser uma simples aplicação que faz um select de uma tabela inteira e coloca na memória ? Ou outros problemas de programação que não limpam dados e ficam para sempre na memória, consumindo espaço. Uma simples investigação, observe ao fim de cada dia a memória ocupada pelo jboss e anote, se permanecer estável, constante, então está tudo bem, mas caso a memória ocupada pelo jboss aumente a cada dia, então deve ter problema de retenção de memória, merece investigação.