Apache Tomcat连接池已耗尽

Apache Tomcat连接池已耗尽,apache,tomcat,jdbc,connection-pooling,pooling,Apache,Tomcat,Jdbc,Connection Pooling,Pooling,我在项目中使用ApacheTomcatJDBC连接池。我很困惑,因为在重载情况下,我一直看到以下错误: 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, n

我在项目中使用ApacheTomcatJDBC连接池。我很困惑,因为在重载情况下,我一直看到以下错误:

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");

如果您看到日志
Timeout:Pool empty,那么这将按照设计/实现工作。无法在10秒内获取连接,并且您的配置为p.setMaxWait(10000)。请求线程等待10秒(10000毫秒,maxwait),然后放弃等待连接


现在您有了两种解决方案,增加maxActive连接的数量或检查是否存在任何连接泄漏/长时间运行的查询(这是您不期望的)

通常人们会忘记设置以下属性(相应地使用数字):最大空闲时间:8最大活动时间:100分钟空闲时间:8谢谢@用户817795用于指出此最大空闲、最小空闲参数设置!更具体地说,它是spring.datasource.tomcat.max-active、max-idle、min-idle。否则,最大空闲=最大活动。有关详细说明,请参见和。