2015-03-31 140 views
2

我在我的項目中使用Apache Tomcat JDBC連接池。我很困惑,因爲在重負荷下我不斷看到以下錯誤:Tomcat連接池耗盡

12:26:36,410 ERROR [] (http-/XX.XXX.XXX.X:XXXXX-X) org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-/XX.XXX.XXX.X:XXXXX-X] Timeout: Pool empty. Unable to fetch a connection in 10 seconds, none available[size:4; busy:4; idle:0; lastwait:10000]. 
12:26:36,411 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/APP].[AppConf]] (http-/XX.XXX.XXX.X:XXXXX-X) JBWEB000236: Servlet.service() for servlet AppConf threw exception: org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException 

我的期望是與統籌,新的連接請求會被保留在隊列中,直到連接變得可用。相反,似乎請求在池達到容量時被拒絕。這種行爲可以改變嗎?

感謝,

達爾

這是我的池配置:

  PoolProperties p = new PoolProperties(); 
      p.setUrl("jdbc:oracle:thin:@" + server + ":" + port + ":" + SID_SVC); 

      p.setDriverClassName("oracle.jdbc.driver.OracleDriver"); 
      p.setUsername(username); 
      p.setPassword(password); 
      p.setMaxActive(4); 
      p.setInitialSize(1); 
      p.setMaxWait(10000); 
      p.setRemoveAbandonedTimeout(300); 
      p.setMinEvictableIdleTimeMillis(150000); 
      p.setTestOnBorrow(true); 
      p.setValidationQuery("SELECT 1 from dual"); 
      p.setMinIdle(1); 
      p.setMaxIdle(2); 
      p.setRemoveAbandoned(true); 
      p.setJdbcInterceptors(
        "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" 
        + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;" 
     + "org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"); 

回答

4

該工作按設計/實施,如果你看到的日誌Timeout: Pool empty. Unable to fetch a connection in 10 seconds和你的配置是p.setMaxWait(10000);。請求線程在放棄等待連接之前等待10秒(10000毫秒,maxwait)。

現在你有兩個解決方案,增加maxActive連接的數量或檢查是否有任何連接泄漏/長時間運行的查詢(你不期望)。

+1

通常人們忘了(因此使用號碼)設置以下屬性: 最大空閒:8 最大活性:100 分鐘空閒:8個 – user817795 2017-09-09 07:48:46

+0

謝謝! @ user817795用於指出此最大空閒,最小空閒參數設置!更具體地說,它是spring.datasource.tomcat.max-active,max-idle,min-idle。否則,最大空閒=最大活動。請參閱https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes和https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features -sql.html獲取詳細的解釋。 – 2018-02-20 01:56:56