Zuviel Db-Connections bei Connectionpooling

xrax

Aktives Mitglied
Hallo zusammen,

ich habe ein Servlet geschrieben das seine Connections zur DB per Connectionpooling erhält. Es läuft auf einem Tomcat 8.0. Nach Abarbeitung einer Query schliesse ich diese Connection und das Statement mit .close() wieder.
Macht dann das Pooling überhaupt Sinn ?

Trotz meines Closings sehe ich aber im PHP-Admin (SHOW PROCESSLIST) das immer zwischen 8 und > 30 Connections offen sind. Auch wenn gar keine Anfrage ans Servlet kommt. Die stehen dort für z.T. > 30 min auf sleep. Das dürfte, meine ich, nicht sein. Also,- weis jemand worans liegts ?
Hier noch das configfile fürs Pooling.

Code:
<?xml version='1.0' encoding='utf-8'?>
<Context>
      <WatchedResource>WEB-INF/web.xml</WatchedResource>
      <Resource name="jdbc/Production-DB"
    auth="Container"
    type="javax.sql.DataSource"
         username="foo"
    password="bar"
    driverClassName="com.mysql.jdbc.Driver"
         url="jdbc:mysql://85.123.456.789/db"
    initialSize="2"
    maxActive="150"
    minIdle="2"
    maxIdle="30"
    maxWait="20000"
    validationQuery="SELECT 1"
    removeAbandoned="true"
    removeAbandonedTimeout="180"
    logAbandoned="true"
    />
</Context>

Besten Dank
xrax
 

stg

Top Contributor
Macht dann das Pooling überhaupt Sinn ?

Ja. Du machst es genau richtig. Die Datenbankverbindung wird (aus Sicht der Anwendung) logisch geschlossen. Ob sie auch physisch tatsächlich geschlossen wird, oder als offene Connection im Pool umherdümpelt, das obliegt der Verantwortung des Pools.

Mit dem maxIdle-Parameter auf 30, solltest du, sofern keine Anfragen ausstehen, eigentlich nicht mehr als 30 aktive Verbindungen sehen. (natürlich nur, wenn nicht noch von anderer Stelle Verbindungen offengehalten werden)
 

Ähnliche Java Themen

Neue Themen


Oben