-1

我们在我们的 Web 应用程序(基于 QTI 的在线考试系统)中使用 c3p0 连接池,问题是我们无法同时支持超过 18 个用户,因为第 19 个用户服务器需要大量时间才能做出响应。

我们已经尝试了 DBCP 和 TOMCAT JDBC 池,但我们得到了相同的结果。

我们正在使用 JDK 7、MYSQL v5.5.8 和 apache tomcat 7.0.42。

我在单例类中创建数据源

这是代码片段

public class Helper {
  private static ComboPooledDataSource dataSource; 
  private static ResourceBundle bundle;

static { 
    try { 

        String bundleName2 = "Conf/db"; 
        bundle = ResourceBundle.getBundle(bundleName2);
        String db_name = bundle.getString("DB_NAME");
        String db_user = bundle.getString("DB_USER");
        String db_pass = bundle.getString("DB_PASS");     

        dataSource = new ComboPooledDataSource();            
        dataSource.setDriverClass( "com.mysql.jdbc.Driver" );
        dataSource.setJdbcUrl( "jdbc:mysql://localhost:3306/"+db_name );
        dataSource.setMaxPoolSize(150);
        dataSource.setInitialPoolSize(30);
        dataSource.setMinPoolSize(30);
        dataSource.setMaxStatements(180);
        dataSource.setUser(db_user);                    
        dataSource.setPassword(db_pass);
        System.out.println("-------------data scource created------------");


    } catch (PropertyVetoException ex) {
        Logger.getLogger(Helper.class.getName()).log(Level.SEVERE, null, ex);
    }
}
public static Connection getConnection() throws SQLException {
    System.out.println("=================================================");
    System.out.println("Num Connections"+dataSource.getNumConnections());
    System.out.println("Num Buzy Connections"+dataSource.getNumBusyConnections());
    System.out.println("max pool size"+dataSource.getMaxPoolSize());
    System.out.println("idle connection"+dataSource.getNumIdleConnections());
    System.out.println("================================================");

    return dataSource.getConnection();
}

我打电话给“Helper.getConnection();” 获取连接对象的方法。

谁能告诉我们可能是什么原因。

4

1 回答 1

-1

尝试使用 BoneCP 而不是 c3po。据我所知,c3po 已被弃用

于 2013-10-08T06:45:35.653 回答