JSF+Spring+Hibernate consumindo muita memória em servidor remoto
8 respostas
DarthCego
Ola amigos
tenho uma aplicação que roda com JSF 2.1 Spring 3.1 Hibernate 3.6 tomcat 7 e Spring Security 3
em desenvolvimento ela funciona certinho porém quando fui fazer o deploy no servidor remoto começou a dar erro de permGen
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
minha duvida é a seguinte o servidor que aluguei no webhost.com.br tem apenas 128mb de memória dedicada isso é pouco para uma aplicação desse porte que roda varios frameworks?
já pesquisei e li que o spring + hibernate gasta muita memória mesmo li até sobre o -XX:MaxPermSize=256m porém em ambiente de desenvolvimento nenhum PC teve qualquer configuração alterada para aumentar a memório da JVM ou tomcat e sempre funcionou já aumentei o plano para ter 256mb de memória dedicada mas o erro persiste já usei o JProfiler para procurar leaks de memória mas não acredito que existam.
Resumindo: 256mb de memória dedicada é pouco para uma aplicação assim com tantos frameworks? Deveria eu contratar um plano com mais memória ou existe alguma biblioteca que gerencia o consumo de memória para mim?
Cara, teste localmente na sua máquina setando o XX:MaxPermSize para 128. Ai vc faz os testes e verifica na sua propria máquina se ocorre o problema. Se ocorrer vc aumenta para 256 e verifica, se ocorrer, ai vc aumenta pra ver em quanto de memória que resolve. Se aumentar um pouco mais e resolver, ai vc aumentar o seu plano la. 256 não sei se ta o suficiente. Testa com 512 pra ter certeza. Quanto a uma lib que gerencie isto para vc, desconheço.
DarthCego
Ola amigo
incrivelmente eu testei localmente com
-XX:MaxPermSize=64m
na JVM e funcionou so deu erro de permGen quando setei 32mb dai fui olhar o catalina.sh do servidor e esta assim
JAVA_OPTS="-Xms32m -Xmx256m -XX:MaxPermSize=96m" se eu alterar o MaxPermSize no tomcat será que surtira algum efeito? pois localmente nao há nenhuma configuração diferente no meu tomcat
Obrigado
AGAraujo
Estou tento o mesmo problema… sendo que antes de eu atualizar o Spring para 3.1 e mudar a implementação de JPA para Hibernate tudo era tranquilo.
Descobriu algo?
gnucleber
Ola amigos,
To tentando montar uma aplicação com JSF 2.1 + Hibernate e Spring Security, pelo que vi no tópico vocês ja conseguiram isso. Estou seguindo o livro da novatec Programação pra WEB. O livro monta um DataSource JNDI para o Spring Security e Hiberante acessarem o Mysql fiz e já refiz os passos e sempre apresenta a seguinte mensagem de erro pelo netbeans 7.1.1:
<?xml version="1.0" encoding="UTF-8"?><b:beansxmlns="http://www.springframework.org/schema/security"xmlns:b="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"><http><intercept-urlpattern="/admin/**"access="ROLE_ADMINISTRADOR"/><intercept-urlpattern="/restrito/**"access="ROLE_USUARIO"/><form-loginlogin-page="/publico/login.jsf"always-use-default-target="true"default-target-url="/restrito/principal.jsf"authentication-failure-url="/publico/login.jsf?login_error=1"/><logout/><remember-me/></http><authentication-manager><authentication-provider><jdbc-user-servicedata-source-ref="financeiroDataSource"authorities-by-username-query="SELECT login, permissao FROM usuario WHERE login = ?"users-by-username-query="SELECT login, senha, ativo FROM usuario WHERE login = ?"/></authentication-provider></authentication-manager></b:beans>
Meu web.xml:
<!-- Spring Security --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml
/WEB-INF/applicationContext-security.xml
</param-value></context-param><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><resource-ref><description>DataSourceFinaceiroDB</description><res-ref-name>jdbc/FinanceiroDB</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>
Amigos agradeço qualquer ajuda ou dica pois já tem varios dias que quebro cabeça com esse código.
forte abraço.
AGAraujo
O que está dizendo ai é que o “contexto” que configurou possivelmente não foi carregado, pois o caminho /Financeiro não está conhecido.
O por quê de não ter sido carregado é outra historia! Pode ter sido erro de parametros, caminho incorreto do arquivo de contexto, etc…
O melhor a fazer é verificar o carregamento…
Ari
H
Haziel
gnucleber,
da uma olhada nos logs do tomcat, eu tava tendo bastante destes erros e por incrível que pareça
uma daz vezes foi erro de um mapeamento do hibernate*, não se confie muito destes erros ae, eu
acho melhor olhar direto nos logs.
Caso vc esteja rodando direto do Netbeans, copia o projeto e roda dirteo pelo tomcat e acompanha nos logs,
eu ja tive esses erros dos infernos, mas foram vários e vou ter que olhar melhor aqui pra te ajudar.
*Alterei
gnucleber
Haziel:
gnucleber,
da uma olhada nos logs do tomcat, eu tava tendo bastante destes erros e por incrível que pareça
uma daz vezes foi erro de um mapeamento do tomcat, não se confie muito destes erros ae, eu
acho melhor olhar direto nos logs.
Caso vc esteja rodando direto do Netbeans, copia o projeto e roda dirteo pelo tomcat e acompanha nos logs,
eu ja tive esses erros dos infernos, mas foram vários e vou ter que olhar melhor aqui pra te ajudar.
Ola Haziel, realmente você tinha razão cara. Peguei a versão mais nova do netbeans (7.1.2) coloquei a aplicação e rodei o tomcat e fui acessar direto pelo browser ao invez de mandar executar pelo NetBeans e ta tudo normal! Vale pela dica
H
Haziel
É um parto, toda alteração nas classes tenho que ficar parando o tamcat e copiando do netbeans mas
é a única maneira que deu pra mim. Que bom que ta tudo ok. Tbm estou usando este livro, é muito bom.