Estou enfrentando problema de performance no Glassfish 3.01, com apenas 10 usuários minha aplicação trava ao longo de poucas horas de uso.
Monitorando com o VisualVM e com o plugin Visual GC vejo que a partir do momento que a geração old do heap atinge o máximo a performance baixa muito tornando a aplicação inutilizável.
Acredito ser problema de algum framework, gostaria de saber se alguém já teve algum problema parecido.
Sem conhecer nada da aplicação, acredito que vc deve estar colocando coisa demais na sessão. Se estiver usando cache L2 do Hibernate o consumo de memória também aumentará, mas não acredito que desse tanto.
Pegue um ManagedBean seu e veja como está o escopo dele, tanto @SessionScoped como @ConversationScoped irão consumir bastante recurso, ainda mais se nesses beans tiverem coleções ou muitos objetos, por exemplo. Se estiver usando conversação e não tiver encerrando-a, é a mesma coisa do @SessionScoped.
J
JeeProgrammer
Opa vou dar uma olhada na questão do cache L2, quanto ao escopo estou usando o ViewScope para 98% dos Mbeans do sistema.
obrigado!
L
lsjunior
Nunca mexi no Glassfish(mexi no antigo Sun Application Server), mas ele não teria alguma parte para visualizar esses recursos usados pelo siste,a, por que as informações da VisualVM não são uteis pra esse caso.
JBoss tem algumas opções pra monitoração, essa http://rhq-project.org/display/RHQ/Home é independente do servidor de aplicação e pode ser usada com Glassfish, tanto o servidor como o agente.
tmvolpato
Você criou um dataSource no glassfish para ele gerenciar ou você tem isso em arquivo .xml
se tiver em um .xml poste ele
flw
J
JeeProgrammer
Tenho um DataSource no Glassfish, e as configurações do pool e caching são as default do Glassfish.
valeu.
tmvolpato
você tem um arquivo persistence.xml correto
poste o conteudo desse arquivo aqui para mim dar uma olhada
pode ser alguma configuração feita nesse aquivo que está dando problema na aplicação
J
JeeProgrammer
Meu arquivo persistence.xml
<persistence-unitname="em"><!-- The provider is a fully-qualified class name of the EJB Persistence provider. You do not have to define it if you don't work with several EJB3 implementations. This is needed when you are using multiple vendor implementations of EJB Persistence. --><provider>org.hibernate.ejb.HibernatePersistence</provider><jta-data-source>jdbc/teste</jta-data-source><properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.SQLServerDialect"/><propertyname="hibernate.show_sql"value="true"/><propertyname="hibernate.use_outer_join"value="false"/><propertyname="hibernate.max_fetch_depth"value="0"/><propertyname="hibernate.current_session_context_class"value="thread"/><!-- envers (auditoria) --><!-- <property name="hibernate.hbm2ddl.auto" value="validate"/> --><propertyname="hibernate.ejb.event.post-insert"value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener"/><propertyname="hibernate.ejb.event.post-update"value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener"/><propertyname="hibernate.ejb.event.post-delete"value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener"/><propertyname="hibernate.ejb.event.pre-collection-update"value="org.hibernate.envers.event.AuditEventListener"/><propertyname="hibernate.ejb.event.pre-collection-remove"value="org.hibernate.envers.event.AuditEventListener"/><propertyname="hibernate.ejb.event.post-collection-recreate"value="org.hibernate.envers.event.AuditEventListener"/><propertyname="org.hibernate.envers.audit_strategy"value="org.hibernate.envers.strategy.ValidityAuditStrategy"/><propertyname="org.hibernate.envers.store_data_at_delete"value="true"/><propertyname="org.hibernate.envers.revision_field_name"value="SQ_REVISAO"/><propertyname="org.hibernate.envers.audit_strategy_validity_end_rev_field_name"value="SQ_REVISAO_FINAL"/><propertyname="org.hibernate.envers.revision_type_field_name"value="IN_TIPO"/><!-- /envers --></properties></persistence-unit>
tmvolpato
No seu arquivo persistence nao tem nada fora do normal
Quando você criou seu datasource no glassfish, vc lembra se alterou as configuraçoes
Grupo de conexões JDBC > Edit JDBC Connection Pool
pode tirar um print dessa tela ou escrever msm
Acredito eu que voce ja deve ter visto no Jvisualvm que o problema vem do pool