For Christopher and Alberty, here is an example of how we connect to the database. I'm quite sure we are using the JDBC pool. My next step is to try to log the Connection objects life, and I hope to find some memory leaks! I got to say that we were using the same application with a Tomcat 4 and a JVM 1.4.08 without any problem.
Thanks for your previous answers! DataSource ds; String datasource = "jdbc/Signup"; try { Context ic = new InitialContext(); Context envCtx = (Context) ic.lookup("java:/comp/env"); ds = (DataSource) envCtx.lookup(datasource); } catch (NamingException ne) { logger.error("Error looking up datasource jdbc/Signup : " + e.getMessage()); } Connection myConnection = null; CallableStatement oCmd = null; ResultSet result = null; try { myConnection = ds.getConnection(); oCmd = myConnection.prepareCall("{call STOREDPROC(?, ?)}"); oCmd.registerOutParameter(1, OracleTypes.CURSOR); oCmd.setString(2, critere); oCmd.execute(); result = (ResultSet)oCmd.getObject(1); /* SNIP */ } catch (Exception e) { logger.error(e.getMessage(), e); throw new DepotGarantieNotFoundException("Erreur SQL", e); } finally { try { if (result != null) { result.close(); result = null; } if (oCmd != null) { oCmd.close(); oCmd = null; } if (myConnection != null) { myConnection.close(); myConnection = null; } } catch (SQLException e) {} } Guillaume de Vinzelles DSI/PFS Neuf Cegetel Altran Technologies [EMAIL PROTECTED] 01 70 18 21 64 -----Message d'origine----- De : Christopher Schultz [mailto:[EMAIL PROTECTED] Envoyé : mercredi 11 octobre 2006 16:20 À : Tomcat Users List Objet : Re: JDBC Pool exhaustion Guillaume, > <Resource name="jdbc/Signup" auth="Container" > type="javax.sql.DataSource" > driverClassName="oracle.jdbc.driver.OracleDriver" > > The Tomcat manager shows around 1000 sessions on the server, which > seems to be pertinent. What is your connection allocation strategy? Meaning: do you allocate a Connection object to each session for the life of the session, or do you use some kind of pooling mechanism and only fetch Connection objects when you need to execute a query? If you associate a Connection with each session, I would strongly recommend that you use pooling as described above. If you are already using pooling (which it looks like you /are/ given your configuration), then you might have a connection leak in one or more places. How are you actually getting and releasing your connections? > We can see with the JMXProxy that the JDBC pool connections are never > recycled, e.g. the active connections number is going higher and > higher and never stays at the same level, which is strange because > the amount of active sessions isn't growing. Does your connection count grow larger than 150 (your maxActive number)? Perhaps you really do need that number of connections if you have 1000 sessions. > Do you have any idea about what we can do to 'force' the Tomcat > server to release the unused JDBC connections? Tomcat isn't in charge of your connections... the Oracle driver is. You'd have to look at how they are being used. -chris --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]