[ 
https://issues.apache.org/jira/browse/DBCP-301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Thomas resolved DBCP-301.
------------------------------

       Resolution: Fixed
    Fix Version/s: 1.3

Resolving as this will be fixed in 1.3 onwards

> maxOpenPreparedStatements needs a better default or at least better 
> documentation.
> ----------------------------------------------------------------------------------
>
>                 Key: DBCP-301
>                 URL: https://issues.apache.org/jira/browse/DBCP-301
>             Project: Commons Dbcp
>          Issue Type: Improvement
>    Affects Versions: 1.2.2
>         Environment: Tomcat 6.0.20, Sun Java 1.6.0_16
>            Reporter: Bill Davidson
>             Fix For: 1.3
>
>
> If you set poolPreparedStatements="true", it is important to set the 
> maxOpenPreparedStatements to something reasonable.  The default of unlimited 
> is very likely to cause many applications to run out of cursors, since pooled 
> PreparedStatement objects are not actually closed, which means they keep 
> cursors open.  I ran out of cursors because of this using Oracle.
> I realize that setting the right default is problematic, and the best choice 
> almost certainly varies with which DBMS is being used, how much memory it has 
> available and the nature of the application.  Perhaps better warnings in the 
> documentation would make more sense.
> The current configuration documentation for these options contains only this 
> warning:
> "NOTE - Make sure your connection has some resources left for the other 
> statements."
> That really doesn't make it clear that poolPreparedStatements is going to eat 
> up all of your database cursors after a while if you keep connections open 
> for very long (as you might if you have a very active system).
> It would be nice to have some sort of warning there letting people know that 
> using poolPreparedStatements but not setting an appropriate 
> maxOpenPreparedStatements has a high probability of causing problems on busy 
> systems.  Maybe something like this:
> NOTE - When setting poolPreparedStatements="true" it is highly recommended 
> that you also set maxOpenPreparedStatements to a value appropriate to your 
> DBMS and application.  Pooled PreparedStatement objects are not closed, and 
> so can keep to many database cursors open on busy systems which can consume 
> all of your cursor resources.  The optimal value of maxOpenPreparedStatements 
>  will depend upon your DBMS, the application, and your hardware resources but 
> it must be set to something less than the maximum number of open cursors 
> allowed on a Connection by your DBMS.
> I'm sure that it could probably be worded better.  I'm just trying to get the 
> idea across.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to