Tomcat Connection Pool Exhasuted

Ich verwende Apache Tomcat JDBC-Verbindungspooling in meinem Projekt. Ich bin verwirrt, weil ich unter starker Last immer wieder den folgenden Fehler sehe:

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

Meine Erwartung war, dass beim Pooling Anforderungen für neue Verbindungen in einer Warteschlange gehalten werden, bis eine Verbindung verfügbar wird. Stattdessen scheinen Anfragen abgelehnt zu werden, wenn der Pool seine Kapazität erreicht hat. Kann dieses Verhalten geändert werden?

Vielen Dank

Dal

Dies ist meine Pool-Konfiguration:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage