Venho a algum tempo enfrentando um problema no qual meu GlassFish cai constantemente.
O meu projeto possui uma interface que roda sobre um GlassFish em um servidor na LocaWeb
Já aqui roda um WebService que acessa meu banco e manda/recebe informações para essa interfaces(O WebService também roda em um GlassFish)
Ambos caem sempre, alternadamente ou juntos. No meu ambiente de teste, forçando a aplicação, isso não ocorre.
Procuro fechar sempre os recursos que uso, mas mesmo assim, ele cai constantemente, mesmo com poucos acessos ao aplicativo.
Alguém já enfrentou isso antes ou possui alguma idéia de onde esteja o erro?
Pois bem. O que há de diferente em seus 2 ambientes ???
Versão do Glass ?
Número de acessos ?
Configuração inicial da JVM ?
Precisamos saber disso, pois o que pode estar estourando suas Apps pode ser Ns coisas. Vamos tentar mapear isso e cercar o erro.
Para começar, seria bom você olhar como está configurado os parâmetros iniciais da sua JVM. Lembre, na sua máquina pode ter 1 Gb de memória disponível e só você testando, já no server da Locaweb pode ter só 512 Mb disponível e 100 acessos simultâneos por exemplo.
Enfim, precisamos de mais informações, pois uma mesma App, em um mesmo AS, com uma mesma carga, não deveria cair em um ambiente e não cair em outro.
Abs []
V
victorgilc
Olá Adriano, boa tarde
Obrigado pela resposta.
Em ambos a versão do GlassFish é a 3.1.2
O numero de acessos não deve passar de 10 usuários simultâneos
Nas minhas 'Definições de JVM ', tenho as seguintes configurações referentes a memória
-XX:MaxPermSize=256m
-XX:PermSize=256m
-Xmx1024m
Sendo de 4GB a memória principal da máquina
Uso o JSF 2 com o NetBeans 7.1.2 e JDK 7
Abraços
A
adriano_si
E no da Locaweb ??? Mesma configuração de JVM ??
Tem como você recuperar o Log do Server no momento em que as Apps caem ???
Uma boa, é tbm procurar hs_err_pid.log que é gerado em crashs da VM pra saber se está estourando memória no seu server de produção. O único problema dessa dica é que eu não sei em que hierarquia fica esse log dentro do GlassFish.
Procurar nos Logs do Server tbm pode ser uma boa, deve ter alguma Exception que estourou par a App cair.
E outra coisa também, o processo do servidor continua ativo, ele apenas não responde as requisições
V
victorgilc
Parece que as quedas do servidor da LW é graças ao WebService…Faz sentido?
V
victorgilc
Um exemplo de erro que o WebService apresenta, próximo a horários de quedas
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:458) at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3757) at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:3714) at dal_jdbc.ControleAcessoDALJDBC.getPermissoes(ControleAcessoDALJDBC.java:131) at bll.ControleAcessoServiceBLL.verificaPermissoes(ControleAcessoServiceBLL.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:42) at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) at $Proxy368.verificaPermissoes(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:264) at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137) at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:260) at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:111) at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105) at bll.IControleAcessoBLL$119668834$Proxy$_$$_Weld$Proxy$.verificaPermissoes(IControleAcessoBLL$119668834$Proxy$_$$_Weld$Proxy$.java) at controller.WebService.controleAcessoverificaPermissoes(WebService.java:348) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:192) at $Proxy363.controleAcessoverificaPermissoes(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.glassfish.webservices.InvokerImpl.invoke(InvokerImpl.java:82) at org.glassfish.webservices.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:94) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:961) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:910) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:873) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:775) at com.sun.xml.ws
Acho que não estou fechando nenhum statement indevidamente, não é mesmo :? , ou estou?
L
Luiz_Gustavo
victorgilc,
você está utilizando pools de conexão, ou seja, datasources? Se sim veja como está a configuração de timeout para as conexões. Se não estiver utilizando eu recomendo.
Eu já tive muito problema com os timeouts das conexões configurados pela LW (eram timeouts de poucos segundos). por serem tempos muito pequenos, em operações que levavam um pouco mais de tempo tínhamos problemas com conexões fechadas.
Não que esta seja a causa do problema, mas como você disse que o sistema não cai, apenas para de responder, pode ter algo relacionado a isso.
A quantidade de memória alocada, para a quantidade de usuários que você citou, não me parece ser o problema, num primeiro momento.
Se possível mande mais dados dos logs.
Abraço!
L
Luiz_Gustavo
Em uma rápida consulta aqui pelo erro apresentado, realmente me parece ser o caso:
Reforçando, se não estiver utilizando um pool de conexões (datasource) faça isso, e se estiver revise os tempos de timeout. Confirme na LW qual o tempo de timeout que eles configuram no MySQL. Quando eu usava (há muito tempo atrás) se não me falha a memória o timeout era de 5 segundos.