Urgente: Aplicacao com Mysql para de funcionar após algumas horas

9 respostas
spranta

Pessoal, tenho um ambiente com Tomcat 5.0.28 e Mysql 5.2.3790 onde a aplicacao funciona blz, só que apos umas 12 horas a aplicação não consegue mais conectar com o banco, e gera a excecao abaixo, alguem sabe o que pode ser? Estou utilizando hibernate para acesso ao bd.

net.sf.hibernate.JDBCException: Could not execute query
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1547)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1521)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.base._BaseRootDAO.find(_BaseRootDAO.java:242)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.base._BaseRootDAO.find(_BaseRootDAO.java:230)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.LancamentoDAO.getDespesasCondominio(LancamentoDAO.java:133)
	at com.mbw.mcp.poliweb.sindicoeletronico.busines.LancamentoBO.searchDespesasCondominio(LancamentoBO.java:191)
	at com.mbw.mcp.poliweb.sindicoeletronico.web.action.LancamentoAction.IniciaProgramacaoPagamentos(LancamentoAction.java:827)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
	at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:252)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Software caused connection abort: recv failed

STACKTRACE:

java.net.SocketException: Software caused connection abort: recv failed
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:75)
	at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:94)
	at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:122)
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1842)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2292)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2788)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1534)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1625)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2226)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1812)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1657)
	at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
	at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:875)
	at net.sf.hibernate.loader.Loader.doQuery(Loader.java:269)
	at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
	at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
	at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
	at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1544)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1521)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.base._BaseRootDAO.find(_BaseRootDAO.java:242)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.base._BaseRootDAO.find(_BaseRootDAO.java:230)
	at com.mbw.mcp.poliweb.sindicoeletronico.dao.LancamentoDAO.getDespesasCondominio(LancamentoDAO.java:133)
	at com.mbw.mcp.poliweb.sindicoeletronico.busines.LancamentoBO.searchDespesasCondominio(LancamentoBO.java:191)
	at com.mbw.mcp.poliweb.sindicoeletronico.web.action.LancamentoAction.IniciaProgramacaoPagamentos(LancamentoAction.java:827)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
	at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:252)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)


** END NESTED EXCEPTION **


	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2504)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2788)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1534)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1625)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2226)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1812)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1657)
	at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
	at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:875)
	at net.sf.hibernate.loader.Loader.doQuery(Loader.java:269)
	at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
	at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
	at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
	at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1544)
	... 43 more

Espero que me ajudem pois estou desesperado com isso a algum tempo e nao consiguo descobrir o que é, e por isso tenho que reiniciar a aplicação todos os dias de manha.

9 Respostas

Mauricio_Linhares

Você tá usando o pool C3P0?

spranta

Não tô usando ele nao, até tava a um tempo atras mas ele começou a dar uns pau e dai tirei, porque? vc recomenda usar ele?

Z

MySQL 5.2.3790? Tem certeza que a versão é essa? Nunca tinha visto falar em MySQL 5.2, e também não tem nada no site.

O banco cai mesmo se você não usar essa aplicação Java? Qual a versão do Connector/J que você tá usando?

Pode ser que você esteja usando uma versão ainda em desenvolvimento do banco e - parabéns! - tenha acabado de achar um bug. :mrgreen:

Mauricio_Linhares

spranta:
Não tô usando ele nao, até tava a um tempo atras mas ele começou a dar uns pau e dai tirei, porque? vc recomenda usar ele?

Nada, ia dizer pra você não usar :mrgreen:

E a versão 5 do MySQL é beta, use a versão 4.

spranta

Pois é, acabei fazendo uma thread na instanciação do meu singleton que agenda um acesso ao banco a cada quatro horas, daí deu certo e agora funciona perfeitamente. Valeu pessoal

A

Também estou com este mesmo problema, como você criou este código da thread?

acdesouza

Você está usando o DataSource do Tomcat?

Configura para que o DataSource valide a conexão antes de retorná-la para sua aplicação:
<?xml version='1.0' encoding='utf-8'?>
<Context displayName="nomeSistema" reloadable="true">
	<Resource name="jdbc/nomeSistema"
			type="javax.sql.DataSource" 
			auth="Container"
			description="MySQL database for Nome do Sistema"
			maxActive="100" maxIdle="30" maxWait="10000"

			validationQuery="select 1"
			testOnBorrw="true"
			testWhileIdle="true"
			timeBetweenEvictionRunsMillis="10000"
			minEvicatableIdleTimeMillis="60000"
			removeAbandoned="true"
			removeAbandonedTimeout="60"
			logAbandoned="true"

			username="admin" password="admin" 
			driverClassName="com.mysql.jdbc.Driver"
			url="jdbc:mysql://localhost/nomeBanco"/>
</Context>

O trabalho sujo é feito pelo atributo validationQuery="select 1". Ele dirá ao DataSource que execute este sql antes de devolver a conexão.
Os outros atributos, destacados, falam sobre log das conexões que foram abandonadas e tempo de timeout.

rogeriop80

Eu tive esse mesmo problema usando o C3P0, dai resolvi fazer uma super busca no google e encontrei uns caras explicando de uns bugs no pool… coloquei alguns parametros na classe que fala com o pool e tudo passou a funcionar.

cpds.setMinPoolSize(1); cpds.setAcquireIncrement(2); cpds.setMaxPoolSize(50); cpds.setAcquireRetryAttempts(3);

Abraços.

Y

rogeriop80:
Eu tive esse mesmo problema usando o C3P0, dai resolvi fazer uma super busca no google e encontrei uns caras explicando de uns bugs no pool… coloquei alguns parametros na classe que fala com o pool e tudo passou a funcionar.

cpds.setMinPoolSize(1); cpds.setAcquireIncrement(2); cpds.setMaxPoolSize(50); cpds.setAcquireRetryAttempts(3);

Abraços.

É comum usar-se:

cpds.setMaxIdleTime(5);
Criado 9 de junho de 2005
Ultima resposta 10 de set. de 2007
Respostas 9
Participantes 7