2012-05-30 62 views
0

我使用Tomcat上6.在Tomcat的游泳池是我的資源定義:tomcat池不重置池。獲得太多的連接錯誤

<Resource name="jdbc/DBConnectionFactory" 
      auth="Container" 
      type="javax.sql.DataSource" 
      username="root" 
     password="root" 
     removeAbandoned="true" 
     removeAbandonedTimeout="600" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost/sicad?autoReconnect=true" 
       minIdle="3" 
     maxActive="250" 
     testWhileIdle="true" 
     validationQuery="SELECT 1" 
      maxIdle="10" 
      timeBetweenEvictionRunsMillis="10000" 
      minEvictableIdleTimeMillis="10000" 
       maxWait="-1" 
    /> 

現在,理想後要250個連接所有的空閒連接應該由一些被刪除,或至少意味着mysql不應該給太多連接錯誤。此外,請注意,如果我做showprocesslist,幾乎沒有任何併發​​查詢進行。所以我在想,那個時候,兩個人之間的輪椅磨合應該做到清除空閒連接並保持活力。但只要設置了250個連接,mysql就會啓動拋出太多連接錯誤。我期待tomcat池會刪除池中的空閒連接,以保持池的大小合理。還要注意的是,它並不是說創造了這麼多。

更糟糕的是,這種配置正在開發者機器和登臺服務器+測試服務器上工作,而不是在產品服務器上。所有的機器都是彼此的克隆。我重新啓動了機器,重新安裝了mysql,但所有內容都是徒勞的。

+1

您是否在與'DataSource'獲取連接的地方''try'塊的'finally'塊中使用後關閉了連接? – BalusC

+0

是的,當然:) – arya

回答

0

沒有工作,最後放棄了硬件和相同的代碼庫,驅動程序和MySQL安裝工作。

0

是否在全局或應用程序級別上進行配置?馬克托馬斯查看4 Mistakes To Avoid On Apache Tomcat如何將context.xml放在錯誤的地方可以創建比您打算更多的連接。長話短說:

  • 如果配置在全球context.xml池你每個應用程序
  • 池,如果你配置的池在應用context.xml你只有一個游泳池
  • ,如果你想擁有一個全球共享的應用程序之間,你必須使用resource links
+0

這不應該是這裏的問題,因爲我只有一個Web應用程序使用數據庫。 – arya

+0

沒有工作:( – arya