GlassFish 3.1.2 cai constantemente

9 respostas
V

Olá Pessoal, bom dia

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?

Atenciosamente

Victor

9 Respostas

A

Cara, bom dia.

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

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

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.

Abs []

V

Olá Adriano

As configurações do ultimo post eram da LW mesmo

do WebService são:

-XX: PermSize=512m
-XX:MaxPermSize=512m
-Xmx1024m

com 4GB de memória principal também

segue abaixo alguns erros ‘graves’ do log

exceptions.WebServiceConnectionException: Estamos enfrentando dificuldades técnicas, tente novamente mais tarde at util.WebServiceFacade.getWebService(WebServiceFacade.java:58) at bll.LoginBLL.getPort(LoginBLL.java:34) at bll.LoginBLL.loginLoga(LoginBLL.java:42) at controller.LoginController.loga(LoginController.java:84) 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:613) at com.sun.el.parser.AstValue.invoke(AstValue.java:254) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:732)

at util.WebServiceFacade.getWebService(WebServiceFacade.java:58)

O erro acima foi no servidor da LW

E outra coisa também, o processo do servidor continua ativo, ele apenas não responde as requisições

V

Parece que as quedas do servidor da LW é graças ao WebService…Faz sentido?

V

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

Esse é o método

public boolean getPermissoes(int idUsuario, int idCargo, String pagina) {
        ResultSet rs = null;
        try (Connection conn = Conexao.getConnection();
                PreparedStatement ps = conn.prepareStatement(JDBCQueries.PERMISSOES_USUARIO_CARGO)) {

            ps.setInt(1, idUsuario);
            ps.setInt(2, idUsuario);
            ps.setInt(3, idCargo);

            rs = ps.executeQuery();

            boolean resp = false;

            while (rs.next()) {

                String paginaAvaliacao = rs.getString("PAGINA");
            
                if (pagina.equals(paginaAvaliacao)) {
                    resp = true;
                    break;
                }

            }
            Conexao.fecha(rs);
            return resp;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            Conexao.fecha(rs);
        }
    }

Acho que não estou fechando nenhum statement indevidamente, não é mesmo :? , ou estou?

L

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

Em uma rápida consulta aqui pelo erro apresentado, realmente me parece ser o caso:

http://stackoverflow.com/questions/7565143/com-mysql-jdbc-exceptions-jdbc4-mysqlnontransientconnectionexception-no-operati
http://stackoverflow.com/questions/2297356/mysqlnontransientconnectionexception-in-jdbc-program-at-run-time
https://community.jboss.org/thread/170092?_sscc=t

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.

Abraço!

V

Olá Luiz Gustavo, bom dia

Obrigado pela resposta.

As configurações do Pool que estou usando são:

Tamanho inicial e mínimo do pool: 8 conexões

Tamahno máximo do pool: 32 conexões

Qtde. Redimens. Pool: 2 conexões

Time-out para ociosidade: 300 Segundos

Tempo máximo de espera: 60000

Atenciosamente

Victor

Criado 30 de agosto de 2012
Ultima resposta 3 de set. de 2012
Respostas 9
Participantes 3