Ir para o conteúdo

 Voltar a Banco de Tal...
Tela cheia

Problema com Broken Pipe na conexão com o banco

9 de Outubro de 2009, 9:43 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 1310 vezes

Pessoal, estou tendo problemas com a estabilidade da conexão com o banco de dados. Depois de um tempo que a aplicação está rodando ela perde a conexão com o servidor do banco com o erro de "Broken Pipe". Isso ocorreu em todas as instalações que já fiz do BT, tanto num servidor JBoss quanto no Tomcat 6.

Abaixo segue a pilha de erros completa:

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2616)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2547)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1512)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2376)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1860)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1705)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
        at org.hibernate.loader.Loader.doQuery(Loader.java:674)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
        at org.hibernate.loader.Loader.doList(Loader.java:2213)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
        at org.hibernate.loader.Loader.list(Loader.java:2099)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at br.gov.camara.negocio.DAO.obter(DAO.java:254)
        at br.gov.camara.negocio.autenticacaoperfil.dao.UsuarioSistemaDAO.obterPelaChave(UsuarioSistemaDAO.java:264)
        at br.gov.camara.negocio.autenticacaoperfil.facade.UsuarioSistemaFacade.obterPelaChave(UsuarioSistemaFacade.java:80)
        at br.gov.camara.visao.autenticacao.sequencia.AutenticacaoSequencia.validarLogonEfetuarLogon(AutenticacaoSequencia.java:253)
        at br.gov.camara.visao.autenticacao.action.AutenticacaoAction.execute(AutenticacaoAction.java:122)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at sigesp.comum.util.hibernate.HibernateServletFilter.doFilter(HibernateServletFilter.java:59)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at br.gov.camara.util.log4j.RequestInfoMDCFilter.doFilter(RequestInfoMDCFilter.java:83)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)



Autor: Christian Cleber Masdeval Braz


44 comentários

  • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
    14 de Outubro de 2009, 10:03

     

    Acho que resolvi o problema ativando a implementação de pool de conexões do hibernate. Basta incluir as seguintes linhas no hibernate.config.xml:

     

    <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>   

    <property name="hibernate.c3p0.acquire_increment">1</property>

    <property name="hibernate.c3p0.idle_test_period">100</property>

    <property name="hibernate.c3p0.timeout">0</property>

    <property name="hibernate.c3p0.max_size">10</property>

    <property name="hibernate.c3p0.max_statements">50</property>

    <property name="hibernate.c3p0.min_size">1</property>

     Att Christian

     

    • F6b9923a86cf6eacf39f6d70438d4c75?only path=false&size=50&d=404Fábia Siqueira(usuário não autenticado)
      14 de Outubro de 2009, 11:41

       

      Como posso baixar o software para testar?

      Fábia
      ----- Original Message -----
      From: masdeval@yahoo.com.br
      To: fabia@recife.pe.gov.br
      Sent: Wednesday, October 14, 2009 10:05 AM
      Subject: [Banco de Talentos Desenvolvimento ] Re: Res: Problema com Broken Pipe na conexão com o banco

      Forum: Banco de Talentos Desenvolvimento
      Thread: Problema com Broken Pipe na conexão com o banco
      Author: Christian Cleber Masdeval Braz
      Posted: 2009-10-14 10:03:32.645279-03

      Acho que resolvi o problema ativando a implementação de pool de conexões do hibernate. Basta incluir as seguintes linhas no hibernate.config.xml:

      net.sourceforge.jtds.jdbc.Driver
      1
      100
      0
      10
      50
      1

      Att Christian

      Recebendo correspondência demais? Gerencie suas notificações em: www.​soft​ware​publ​ico.​gov.​br/n​otif​icat​ions​/man​age

    • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
      14 de Outubro de 2009, 17:30

       

      Oi Christian,

      Nós não temos os problemas que você relatou nos nossos ambientes, talvez por utilizarmos conexões providas pelo contêiner web que utiliza um pool de conexão.

      Ela é semelhante à solução que você apresentou, mas acho que vale a pena deixar registrado.

      Procure na documentação do contêiner web como configurar uma fonte de dados JDBC e altere o arquivo hibernate-config.xml para apontar para essa fonte.

      Como exemplo, segue abaixo uma configuração do Tomcat (http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html) utilizando conexões para o MySQL. Obs: não é necessário fazer nenhuma no arquivo web.xml.

      1) no arquivo hibernate-config.xml, aponte para a fonte de dados chamada "talentos_datasource":

      <property name="hibernate.connection.datasource">java:comp/env/jdbc/talentos_datasource</property>

      2) remova, nesse mesmo arquivo, as referências para hibernate.connection.[username | password | url].

      3) no arquivo de contexto de sua aplicação (em TOMCAT_HOME/conf/Catalina/localhost), acrescente as configurações para a conexão "talentos_datasource". Abaixo um exemplo do conteúdo desse arquivo:

       <Context path="/TalentosDemo" reloadable="true" ... >
          <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
            <Resource name="jdbc/talentos_datasource" type="javax.sql.DataSource" scope="Shareable" />
            <ResourceParams name="jdbc/talentos_datasource">
              <parameter>
                  <name>factory</name>
                  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
              </parameter>
              <parameter>
                  <name>maxActive</name>
                  <value>20</value>
              </parameter>
              <parameter>
                  <name>maxIdle</name>
                  <value>10</value>
              </parameter>
              <parameter>
                  <name>maxWait</name>
                  <value>10000</value>
              </parameter>
              <parameter>
                  <name>removeAbandoned</name>
                  <value>true</value>
              </parameter>
              <parameter>
                  <name>removeAbandonedTimeout</name>
                  <value>60</value>
              </parameter>
              <parameter>
                  <name>logAbandoned</name>
                  <value>true</value>
              </parameter>
              <parameter>
                  <name>driverClassName</name>
                  <value>com.mysql.jdbc.Driver</value>
              </parameter>
              <parameter>
                  <name>validationQuery</name>
                  <value>select now()</value>
              </parameter>
              <parameter>
                  <name>url</name>
                  <value>jdbc:mysql://localhost/talentos_database?autoReconnect=true&amp;relaxAutoCommit=true</value>
              </parameter>
              <parameter>
                  <name>username</name>
                  <value>user_bt</value>
              </parameter>
              <parameter>
                  <name>password</name>
                  <value>senha_bt</value>
              </parameter>
            </ResourceParams>
      </Context>

      Um abraço,

      Luciano.

    • Fef7893bfdf5d687ff74791e015e91fa?only path=false&size=50&d=404Halailton Rodrigues(usuário não autenticado)
      8 de Fevereiro de 2011, 10:53

       

      Devo substituir a linha:

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

      por essa linha?

       <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> 

Essa comunidade não possui posts nesse blog