各位大虾,我在做的一个项目使用SSH框架,项目在运行过程中,不定期的发现数据访问异常。在tomcat的日志文件中发现大量的异常,归总为两类:Broken pipe和Connection reset如下: =============================== 第一种===================
2008-01-17 08:31:56,142-[ERROR][JDBCExceptionReporter]-[Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
2008-01-17 08:31:56,142-[ERROR][StandardWrapperValve]-Servlet.service() for servlet action threw exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select wzyhb0_.id as id, wzyhb0_.lx as lx58_, wzyhb0_.jb as jb58_, wzyhb0_.zh as zh58_, wzyhb0_.mc as mc58_, wzyhb0_.mm as mm58_, wzyhb0_.xb as xb58_, wzyhb0_.qx as qx58_, wzyhb0_.glzh as glzh58_, wzyhb0_.bm as bm58_, wzyhb0_.qqhm as qqhm58_, wzyhb0_.jdr as jdr58_, wzyhb0_.jdsj as jdsj58_, wzyhb0_.sm as sm58_, wzyhb0_.bz as bz58_, wzyhb0_.townno as townno58_, wzyhb0_.yljgbh as yljgbh58_, wzyhb0_.yljgjb as yljgjb58_ from hzylxiaolan.dbo.wzyhb wzyhb0_ where 1=1 and wzyhb0_.zh='l10899' and wzyhb0_.mm='F54A8929510BE6FDC37CA5D669C13170']; SQL state [08S01]; error code [0]; [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.submitRequest(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:826)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:365)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:817)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:809)
at extDao.ExtWzyhbDAO.checkWzyhInfo(ExtWzyhbDAO.java:120)
at myclass.wzyhb.WzyhbLoad.checkWzyhInfo(WzyhbLoad.java:33)
at struts.action.CheckLogonAction.execute(CheckLogonAction.java:58)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2008-01-17 08:31:56,142-[ERROR][JDBCExceptionReporter]-[Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
2008-01-17 08:31:56,142-[ERROR][StandardWrapperValve]-Servlet.service() for servlet action threw exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select wzyhb0_.id as id, wzyhb0_.lx as lx58_, wzyhb0_.jb as jb58_, wzyhb0_.zh as zh58_, wzyhb0_.mc as mc58_, wzyhb0_.mm as mm58_, wzyhb0_.xb as xb58_, wzyhb0_.qx as qx58_, wzyhb0_.glzh as glzh58_, wzyhb0_.bm as bm58_, wzyhb0_.qqhm as qqhm58_, wzyhb0_.jdr as jdr58_, wzyhb0_.jdsj as jdsj58_, wzyhb0_.sm as sm58_, wzyhb0_.bz as bz58_, wzyhb0_.townno as townno58_, wzyhb0_.yljgbh as yljgbh58_, wzyhb0_.yljgjb as yljgjb58_ from hzylxiaolan.dbo.wzyhb wzyhb0_ where 1=1 and wzyhb0_.zh='l10899' and wzyhb0_.mm='F54A8929510BE6FDC37CA5D669C13170']; SQL state [08S01]; error code [0]; [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.submitRequest(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:826)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:365)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:817)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:809)
at extDao.ExtWzyhbDAO.checkWzyhInfo(ExtWzyhbDAO.java:120)
at myclass.wzyhb.WzyhbLoad.checkWzyhInfo(WzyhbLoad.java:33)
at struts.action.CheckLogonAction.execute(CheckLogonAction.java:58)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2008-01-17 08:31:59,456-[ERROR][JDBCExceptionReporter]-[Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
2008-01-17 08:31:59,457-[ERROR][StandardWrapperValve]-Servlet.service() for servlet action threw exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select wzyhb0_.id as id, wzyhb0_.lx as lx58_, wzyhb0_.jb as jb58_, wzyhb0_.zh as zh58_, wzyhb0_.mc as mc58_, wzyhb0_.mm as mm58_, wzyhb0_.xb as xb58_, wzyhb0_.qx as qx58_, wzyhb0_.glzh as glzh58_, wzyhb0_.bm as bm58_, wzyhb0_.qqhm as qqhm58_, wzyhb0_.jdr as jdr58_, wzyhb0_.jdsj as jdsj58_, wzyhb0_.sm as sm58_, wzyhb0_.bz as bz58_, wzyhb0_.townno as townno58_, wzyhb0_.yljgbh as yljgbh58_, wzyhb0_.yljgjb as yljgjb58_ from hzylxiaolan.dbo.wzyhb wzyhb0_ where 1=1 and wzyhb0_.zh='l10899' and wzyhb0_.mm='F54A8929510BE6FDC37CA5D669C13170']; SQL state [08S01]; error code [0]; [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:826)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:365)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:817)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:809)
at extDao.ExtWzyhbDAO.checkWzyhInfo(ExtWzyhbDAO.java:120)
at myclass.wzyhb.WzyhbLoad.checkWzyhInfo(WzyhbLoad.java:33)
at struts.action.CheckLogonAction.execute(CheckLogonAction.java:58)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:674)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:866)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass">
<value> com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
</property>
<property name="jdbcUrl">
<value> jdbc:microsoft:sqlserver://192.168.1.xxx:1433;DatabaseName=xxxx </value>
</property>
<property name="user">
<value> sa </value>
</property>
<property name="password">
<value> xxxxxx </value>
</property>
<property name="minPoolSize">
<value> 15 </value>
</property>
<property name="acquireIncrement">
<value> 5 </value>
</property>
<property name="maxPoolSize">
<value> 300 </value>
</property>
</bean> 有的资料说要增大tomcat的线程数,以下是tomcat的配置文件: <Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="300" minSpareThreads="25" maxSpareThreads="100"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="30000" disableUploadTimeout="true" /> 还有的资料说在linux的环境配置文件/etc/profile中加入_JAVA_SR_SIGNUM=12就可以解决问题,但通过上面的配置,问题依然存在。 现在只能当访问出现问题时重启tomcat来解决,但几乎每天都要重启,请各位大虾指教。
1 你的Connection 是不是声明为static 了
2 你的负责创建Connection 的类是不是使用static总之,就是一个Connection 被重复使用了。
第一个还没用完,第二个就close()了。查找你的获得Connection的代码吧!
2,Connection reset :连接重置,应该是网络问题或者一个Connection被多线程用引起的