c3p0数据库连接池问题

我之前在我的程序里面使用了一个自己编写的数据库连接池,但程序常常莫名其妙的无法从池中取出新的连接,我以为是自己写的程序不对,所以下载了 c3p0作为新的数据库连接池库,但是问题依旧,开始工作的很好,但我重复访问几个从数据库中查询的页面以后,又出现了获取的Conncetion对象为空的问题,请问这是怎么回事?
是我c3p0设置的问题,程序的问题,或者是mysql的问题?

谢谢解答。

我查看了一下c3p0的设置,我把初始池大小改成了20,并且修改了mysql的最大连接数为1000(够大了吧),在用show processlist;查看mysql连接状况的时候,发现c3p0确实只使用了20个连接,我发现我用getConnection返回的每个连接都是新建的连接,这个池根本没有返回已经创建的连接,所以达到20个最大连接数以后就无法继续创建了。我的创建代码是:


public class DBConnectionManager {
private static DBConnectionManager instance = null;
private static Logger log = Logger.getLogger(DBConnectionManager.class);
ComboPooledDataSource cpds = null;
private DBConnectionManager() {
try{
cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl(
"jdbc:mysql://localhost/uso" );
cpds.setUser(
"root");
cpds.setPassword(
"123456");
}catch(Exception ex){
}
}
public static synchronized DBConnectionManager getInstance() {
if (instance == null){
instance = new DBConnectionManager();
}
return instance;
}
public Connection getConnection() throws SQLException{
log.info(
"GET CONNECTION");
try{
Connection conn = cpds.getConnection();
log.info(conn);
return conn;
}catch(Exception ex){
return null;
}
}

}

已经解决,有一个调用很频繁的查询没有释放。