[DÚVIDA] Média de consumo de memória pela JVM

411 views
Skip to first unread message

Savio Freitas

unread,
Nov 27, 2012, 11:07:58 AM11/27/12
to ce...@googlegroups.com
Caros, tenho uma aplicação com um combo tradicional (Jsf, Hibernate, Spring) e como já era de se esperar tudo rola perfeitamente na máquina do desenvolvedor. Inicia o server pelo e eclipse e  é uma maravilha. Contudo quando realizo o deploy em um servidor que não seja local, com configuração bem diferente da minha vem o conhecido "outOfMemory", "java heap space" e por aí vai. Não descarto a possibilidade de ter feito alguma configuração errada no setup do projeto, ou de estar com vários jars sem necessidade. Esta aplicação precisa ser hospedada e a maioria dos serviços de hospedagem que encontrei diponibilizam apenas 128mb de memória para a jvm cobrando taxa extra para cada 128 adicional. E por algum motivo preciso de pelo menos 512. 

Há algum recurso que possa utilizar para medir esse consumo e de repente dar uma otimizada ? 

Só mais uma: alguém conhece algum serviço de hospedagem decente e não tão caro ?


--
Savio Freitas
Desenvolvedor Web
----------------------------------------------

 

Paulo Jr.

unread,
Nov 27, 2012, 11:36:21 AM11/27/12
to ce...@googlegroups.com
Fala Savio,

Cara, quanto você espera pagar pelo serviço de hospedagem? Eu tenho sistema no Rosehosting e tem sido muito bom. Tenho acesso ssh na máquina e um panel para dar reboot se for preciso. O meu plano é 1gb de ram porque o bd fica na mesma máquina. Dá uma olhada: https://www.rosehosting.com/virtserv.html

Pode verificar também a Amazon.. com ela você pode ficar até 1 ano sem pagar NADA. É mais chatinho configurar mas você se acostuma com o tempo.

Ah, eu sei que você não pediu sugestão de server, mas 128 de ram em geral é difícil para apps Java. Caso não esteja com tempo de depurar a aplicação, realizando profiler e etc... sugiro investir em hardware mesmo. Caso contrário, pode tentar o JProfiler; tirar cache da app porque cache consome memória, enfim.. se não poder trocar por um server com mais recursos, vai ser mais sofrido um pouco para conseguir os 128m.

Abraço,




--
-- Você está inscrito na lista de discussão técnica do CEJUG. Para postar nesta lista, envie emails para ce...@googlegroups.com. Para sair da lista de discussão, envie um email para cejug+un...@googlegroups.com. Para sair completamente do grupo, envie um email para ad...@cejug.org ou através do site http://www.cejug.org/jug.
 
 



--
Atenciosamente,

Paulo A. Junior
Analista de Sistemas
JugLeader CEJUG
Skype: paulojribp

Savio Freitas

unread,
Nov 27, 2012, 11:43:32 AM11/27/12
to ce...@googlegroups.com
Oi Paulo, acredito que 128mb seja mesmo de lascar. Como não tenho muita experiência em medir esse consumo, fiquei boiando um pouco. Hoje estou usando tomcat 7. Foi até bom você mencionar o server que posso dar uma olhada com jboss ou glassfish para ver qual atende melhor (é aquele maldito vício: tá funcionando no tomcat? então deixa aí hehe)

vou dar uma olhada no rosehosting que indicou e dar uma conferida na amazon. Acho que esse 1 ano free compensa a mão de obra para configurar. Além do aprendizado.

Obrigado pela dica.

andre girao

unread,
Nov 27, 2012, 12:14:10 PM11/27/12
to ce...@googlegroups.com
Cara,

dá uma olhada também nesse , parece ser muito bom :

http://jelastic.com/


att

André Lima Girão
Oracle Certified Professional, Java SE 6 Programmer 
CellPhone: (085) - 87052585 

"Porque onde estiver o teu tesouro, ai estará também o teu coração"
Mateus 6:21




Date: Tue, 27 Nov 2012 13:43:32 -0300
Subject: Re: [CEJUG] [DÚVIDA] Média de consumo de memória pela JVM
From: lsavio...@gmail.com
To: ce...@googlegroups.com

Hildeberto Mendonça

unread,
Nov 27, 2012, 12:19:39 PM11/27/12
to ce...@googlegroups.com
Oi Savio,

2012/11/27 Savio Freitas <lsavio...@gmail.com>

Caros, tenho uma aplicação com um combo tradicional (Jsf, Hibernate, Spring) e como já era de se esperar tudo rola perfeitamente na máquina do desenvolvedor. Inicia o server pelo e eclipse e  é uma maravilha. Contudo quando realizo o deploy em um servidor que não seja local, com configuração bem diferente da minha vem o conhecido "outOfMemory", "java heap space" e por aí vai.

Que servidor você está usando? Tomcat, Glassfish, JBoss? É o mesmo na máquina do desenvolvedor e no servidor? O deployment demora muito? Os erros ocorrem durante o deployment ou depois que a aplicação começa a executar?
 
Não descarto a possibilidade de ter feito alguma configuração errada no setup do projeto, ou de estar com vários jars sem necessidade. Esta aplicação precisa ser hospedada e a maioria dos serviços de hospedagem que encontrei diponibilizam apenas 128mb de memória para a jvm cobrando taxa extra para cada 128 adicional. E por algum motivo preciso de pelo menos 512. 

A quantidade de jars não impacta muito a memória, e sim o uso que você faz dela.

Eu uso o http://www.eapps.com/ para hosting Java há mais de três anos e recomendo.

--
Hildeberto Mendonça, Ph.D
Blog: http://www.hildeberto.com
Community: http://www.cejug.org

Willker Gomes

unread,
Nov 27, 2012, 12:23:41 PM11/27/12
to ce...@googlegroups.com
Boa tarde Sávio,

Cara, para conseguir o que você quer sem gastar tanto, vai ter que fazer uma limpeza grande e em paralelo um Refactoring de Design. 

Alterar do Tomcat para Jboss ou Glassfish só vai piorar, o Tomcat é um dos mais básicos já. Veja a possibilidade de usar o Jetty que é bem leve e talvez se ajuste melhor as suas necessidades. Se for o caso, ajuste ainda mais, volte a versão do Tomcat até uma mais leve (acho que não seja a melhor idéia). Isso vai impactar nas dependências e vai ter que rever suas especificações para atender os requisitos. 

VEJA comparativo do Jetty vs. Tomcat: http://www.slideshare.net/noriaki/jetty-vs-tomcat#btnNext

No mais será um grande projeto de refactoring se utilizando de ferramentas de Profiling. (VisualVM, JProfiler, JProbe, JMeter ...) Veja também quais as pretensões do seu software, deverá calcular projeções para atendimento de performance, disponibilidade e escalabilidade.

No mais, ponha tudo isso na balança. Talvez você deve estar pensando agora que descobriu que é melhor saída é comprar mais memória por hora, mas na verdade pode ser já um barato que vai sair caro. Se a situação tender a crítica, sem estimar a projeção de performance, no futuro, poderá ser bem mais caro e trabalhoso, podendo até perder o projeto ou até o cliente.

Evitar escopo de sessão. Procurar escalar mais. Reutilizar. Simplificar estrutura de dados. Simplificar design ...

A palavra chave é SIMPLIFICAR.

Então seria bom se fizesse esse estudo para não ser surpreendido futuramente, mesmo comprando mais memória agora.

Construir e Vender (não necessariamente nessa ordem) é fácil né? hehe

--
Atenciosamente

Willker Gomes

System Analyst
SCJP, Certified ScrumMaster

Savio Freitas

unread,
Nov 27, 2012, 12:27:36 PM11/27/12
to ce...@googlegroups.com
Oi Hildeberto, estou utilizando tomcat 7 na minha máquina e no servidor (acabei contratando um mas foi um tiro no pé, pois só depois vi esse detalhe de 128mb para jvm). Não consigo subir a aplicação. Pelo log vi o conhecido outOfMemory ... java heap space. 

--
-- Você está inscrito na lista de discussão técnica do CEJUG. Para postar nesta lista, envie emails para ce...@googlegroups.com. Para sair da lista de discussão, envie um email para cejug+un...@googlegroups.com. Para sair completamente do grupo, envie um email para ad...@cejug.org ou através do site http://www.cejug.org/jug.
 
 

Savio Freitas

unread,
Nov 27, 2012, 12:33:53 PM11/27/12
to ce...@googlegroups.com
Beleza Wilker ? bem, na verdade não é uma aplicação comercial. E salvo engano a única "pessoa" que fica em escopo de sessão é o usuário logado. Nem escopo de view precisei utilizar. Não tem muito processamento. É basicamente inserção de registros. Só estranho esse peso. Tem bastante relacionamento (e pelo que me lembro todos são lazy) Como disse, não descarto a possibilidade de um mau design, algum grupo de objetos sendo carregado sem necessidade etc (mas infelizmente um refactor desse naipe está meio fora de cogitação pelo menos por um tempo). 

Hildeberto Mendonça

unread,
Nov 27, 2012, 12:43:41 PM11/27/12
to CEJUG Discussão

Se você estiver implantando a aplicação num servidor com 128 de ram então não adianta muita coisa. Tem que investir em memória memo.

Savio Freitas

unread,
Nov 27, 2012, 12:53:59 PM11/27/12
to ce...@googlegroups.com
Pois é Hildeberto. acho que 128mb só serve pra fazer raiva. Por isso estou considerando outras hospedagens. E várias estão começando a atender em relação custo/benefício.

Willker Gomes

unread,
Nov 27, 2012, 12:55:28 PM11/27/12
to ce...@googlegroups.com
Sávio,

A plataforma java tem seu custo. Esse cenário que mostrou seria melhor ter usado uma outra estratégia como PHP e framework com mysql que simplificasse mais o desenvolvimento talvez e não java. Provavelmente não usaria metade dos 128mb que comprou. Mas agora já era, o jeito deve ser comprar mais memória mesmo.

--
Atenciosamente

Willker Gomes

System Analyst
SCJP, Certified ScrumMaster




Em 27 de novembro de 2012 14:43, Hildeberto Mendonça <m...@hildeberto.com> escreveu:

Savio Freitas

unread,
Nov 27, 2012, 1:05:30 PM11/27/12
to ce...@googlegroups.com
Com certeza Wilker. certamente vou lembrar disso. Obrigado pela dica anterior.

Hildeberto Mendonça

unread,
Nov 28, 2012, 10:22:30 AM11/28/12
to ce...@googlegroups.com
Como economizar no Jelastic: http://blog.jelastic.com/2012/11/16/save-your-cloud-money/

2012/11/27 Savio Freitas <lsavio...@gmail.com>

Hildeberto Mendonça

unread,
Dec 3, 2012, 12:57:37 AM12/3/12
to CEJUG Discussão

Savio Freitas

unread,
Dec 3, 2012, 6:05:36 AM12/3/12
to ce...@googlegroups.com
Artigo bastante conveniente. Obrigado Hildeberto.
Reply all
Reply to author
Forward
0 new messages