程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL連接空閒超過8小時DBCP造成的異常如何解決

MySQL連接空閒超過8小時DBCP造成的異常如何解決

編輯:MySQL綜合教程

MySQL連接時,服務器默認的“wait_timeout”是8小時,也就是說一個connection空閒超過8個小時,Mysql將自動斷開該connection。connections如果空閒超過8小時,Mysql將其斷開,而DBCP並不知道該connection已經失效,如果這時有Client請求connection,DBCP將該失效的Connection提供給Client,將會造成異常。

mysql配置中my.cnf的wait_timeout值一定要大於等於連接池種的idle_timeout值。否則mysql會在wait_timeout的時間後關閉連接,然而連接池還認為該連接可用,這樣就會產生異常。

  1. org.apache.jasper.JasperException:javax.servlet.ServletException:  
  2.  
  3. javax.servlet.jsp.JspException::CommunicationslinkfailureLastpacketsenttotheserverwas1msago.org.apache.jasper.servlet.JspServletWrapper.handleJspExceptionJspServletWrapper.java:522)  
  4.  
  5. org.apache.jasper.servlet.JspServletWrapper.serviceJspServletWrapper.java:398)  
  6.  
  7. org.apache.jasper.servlet.JspServlet.serviceJspFileJspServlet.java:342)  
  8.  
  9. org.apache.jasper.servlet.JspServlet.serviceJspServlet.java:267)  
  10.  
  11. javax.servlet.http.HttpServlet.serviceHttpServlet.java:717) 

DBCP連接池說明:driverClassNameurlusernamepassword上面四個分別是驅動,連接字符串,用戶名和密碼。

maxActive連接池支持的最大連接數。

maxIdle連接池中最多可空閒maxIdle個連接。

minIdle連接池中最少空閒maxIdle個連接。

initialSize初始化連接數目。

maxWait連接池中連接用完時,新的請求等待時間,毫秒。

timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每timeBetweenEvictionRunsMillis毫秒秒檢查一次連接池中空閒的連接,把空閒時間超過minEvictableIdleTimeMillis毫秒的連接斷開,直到連接池中的連接數到minIdle為止主要把這兩個參數加上就好。

minEvictableIdleTimeMillis連接池中連接可空閒的時間。

毫秒removeAbandonedtrue,false,是否清理。

removeAbandonedTimeout秒沒有使用的活動連接,清理後並沒有放回連接池。

removeAbandonedTimeout活動連接的最大空閒時間。

logAbandonedtrue,false,連接池收回空閒的活動連接時是否打印消息。

minEvictableIdleTimeMillis,removeAbandonedTimeout這兩個參數針對的連接對象不樣。

minEvictableIdleTimeMillis針對連接池中的連接對象。

removeAbandonedTimeout針對未被close的活動連接。

了解了MySQL連接的細節,那麼在以後遇到連接異常這樣的問題時,我們就能很方便的找出其中的錯誤了。本文就介紹到這裡,謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved