2013-05-09 149 views
9

我得到這個錯誤(不頻繁):SQL錯誤:0,SQLSTATE:08S01通信鏈路故障

2013-05-08 16:44:35,786 WARN (JDBCExceptionReporter.java:100) [org.hibernate.util.JDBCExceptionReporter, logExceptions] - SQL Error: 0, SQLState: 08S01 
2013-05-08 16:44:35,786 ERROR (JDBCExceptionReporter.java:101) [org.hibernate.util.JDBCExceptionReporter, logExceptions] - Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
2013-05-08 16:44:35,833 ERROR (AdminDaoImpl.java:297) [com.myapp.admin.db.AdminDaoImpl, createFilePackage] - data-upload: Exception while adding new file package 
org.hibernate.exception.JDBCConnectionException: Cannot open connection 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354) [hibernate-core-3.3.2.GA.jar:3.3.2.GA] 
    at com.myapp.admin.db.AdminDaoImpl. createFilePackage(AdminDaoImpl.java:182) [AdminDaoImpl.class:na] 
    at com.myapp.admin.ctrl.UploadController.processUploadZip(UploadController.java:217) [UploadController.class:na] 
    at sun.reflect.GeneratedMethodAccessor106.invoke(Unknown Source) [na:na] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_35] 
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_35] 
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) [spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) [spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) [spring-webmvc-3.1.0.RELEASE.jar:3.1.0.RELEASE] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) [servlet-api.jar:na] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) [servlet-api.jar:na] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.35] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.35] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [catalina.jar:7.0.35] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [catalina.jar:7.0.35] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [catalina.jar:7.0.35] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) [catalina.jar:7.0.35] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [catalina.jar:7.0.35] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.35] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [catalina.jar:7.0.35] 
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) [tomcat-coyote.jar:7.0.35] 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) [tomcat-coyote.jar:7.0.35] 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) [tomcat-coyote.jar:7.0.35] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_35] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_35] 
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_35] 
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

我有兩個網站(Spring MVC的+休眠+ mysql的)主辦的共享服務器上的應用程序:

1)主要應用顯示下載文件(這是通過管理應用程序插入)

2)CRUD操作

有時會出現此錯誤管理應用程序,當我USI ng「admin」應用程序上傳「main」應用程序的文件,可以說在成功上傳/處理大約100-120個文件/請求之後,並且每次請求使用10-20個插入/更新查詢訪問數據庫。

主機詳細信息:

Private tomcat hosting 
java 1.6.0_35-b10 
tomcat 7.0.35 
heap size 288MB 
MySQL Server 5 
commons-dbcp 1.2.2 
mysql-connector-java 5.1.9 

數據庫+休眠+ DBCP性質:

<bean id="dbDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="username" value="test" /> 
    <property name="password" value="test" /> 
    <property name="url" value="jdbc:mysql://localhost/my_database?useUnicode=yes&characterEncoding=UTF-8" /> 

    <!-- DBCP Connection Pool Settings --> 
    <property name="defaultAutoCommit" value="true" /> 
    <property name="initialSize" value="10" /> 
    <property name="maxActive" value="500" /> 
    <property name="maxIdle" value="8" /> 
    <property name="minIdle" value="0" /> 
    <property name="maxWait" value="30000" /> 
    <property name="validationQuery" value="SELECT 1" /> 
    <property name="testOnBorrow" value="true" /> 
    <property name="testOnReturn" value="false" /> 
    <property name="testWhileIdle" value="false" /> 
    <property name="timeBetweenEvictionRunsMillis" value="-1" /> 
    <property name="numTestsPerEvictionRun" value="3" /> 
    <property name="minEvictableIdleTimeMillis" value="180000" /> 
    <property name="poolPreparedStatements" value="true" /> 
    <property name="maxOpenPreparedStatements" value="25" /> 
    <property name="accessToUnderlyingConnectionAllowed" value="false" /> 
    <property name="removeAbandoned" value="false" /> 
    <property name="removeAbandonedTimeout" value="300" /> 
    <property name="logAbandoned" value="false" /> 
</bean> 

hibernate.dialect=org.hibernate.dialect.MySQLDialect 
hibernate.hbm2ddl.auto=none 
hibernate.jdbc.batch_size=100 
hibernate.show_sql=false 
hibernate.format_sql=false 
hibernate.cache.use_second_level_cache=true 
hibernate.cache.use_query_cache=false 
hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider 
hibernate.current_session_context_class=thread 

關注代碼:

public String createFilePackage(FilePackage package) { 
    String message = ""; 

    Session session = getSessionFactory().openSession(); 
    Transaction tx = null; 
    try { 
     tx = session.beginTransaction(); 

     // handling package, around 10-14 DB insert, 10 SELECT and 5 update queries on same session 

     tx.commit(); 

    } catch(Exception e) { 
     logger.error("file-upload: Exception while adding new font package", e); 
     if(tx != null) { tx.rollback(); } 
    } finally { 
     session.close(); 
    } 
    return message; 
} 

任何建議如何解決這個問題呢?

+0

看MySQL的日誌。看看他們是否有什麼東西來解釋爲什麼連接會意外丟失。 – 2013-05-09 10:56:01

+0

它可能是事務超時? – Tobia 2014-11-18 08:53:20

回答

10

司機和駕駛員正嘗試的功能處理完成之前,連接失敗的數據源之間的通信鏈路。 所以通常它的網絡錯誤。這可能是由數據包丟失或配置錯誤的防火牆/交換機引起的。

+2

我遇到了與問題中所述類似的問題。我同意Marciej的回答。在企業網絡中,我的本地開發人員正在斷開與數據庫服務器的連接,但位於不同防火牆集合後面的部署環境服務器能夠連接到相同的數據庫並保持其連接而沒有問題。我的本地開發機器將在安裝後2分鐘內斷開連接。我還發現跑掉我們的無線網絡保持了連接,而有線連接沒有(並且都通過不同的路由/防火牆運行)。 – 2016-06-22 14:17:03

-2

這個錯誤發生因超時而您的連接

+3

您能否添加更多說明? – Undo 2013-05-23 21:26:50

+0

超時會解釋我的情況。 – MrSmith42 2016-07-04 13:56:53

3

檢查您的服務器配置文件/etc/mysql/my.cnf - 驗證bind_address未設置爲127.0.0.1。將其設置爲0.0.0.0或註釋掉然後重新啓動與服務器:

​​
相關問題