我们在我们的 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();” 获取连接对象的方法。
谁能告诉我们可能是什么原因。