【问题标题】:Tomcat DataSource - Max Active ConnectionsTomcat 数据源 - 最大活动连接数
【发布时间】:2016-10-14 21:46:05
【问题描述】:

我使用以下代码将最大活动连接数设置为 1:

    ConnectionPool initializePool(DataSource dataSource) {
    if (!(org.apache.tomcat.jdbc.pool.DataSource.class.isInstance(dataSource))) {
        return null;
    }
    org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource) dataSource;
    final String poolName = tomcatDataSource.getName();
    try {
        ConnectionPool pool = tomcatDataSource.createPool();
        pool.getPoolProperties().setMaxActive(1);
        pool.getPoolProperties().setInitialSize(1);
        pool.getPoolProperties().setTestOnBorrow(true);
        return pool;
    } catch (SQLException e) {
        logger.info(String.format(" !--! creation of pool failed for %s", poolName), e);
    }
    return null;
}

现在使用线程,我已经打开了与 DB 的并发连接数。我还使用下面列出的代码打印了当前活动的连接数

System.out.println("Current Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getActive());
System.out.println("Max Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getMaxActive());

我看到类似于下面的结果。活动连接数显示为超过 1。但是我想将最大活动连接数限制为 1。是否需要设置其他参数?

当前活动连接数 = 9

最大活动连接数 = 1

编辑:但是,当我尝试使用 15 或 20 作为 max active 时,它​​总是分别限制为 15 或 20。

【问题讨论】:

    标签: java spring tomcat connection-pooling tomcat-jdbc


    【解决方案1】:

    试试 maxIdle 和 minIdle

    ConnectionPool pool = tomcatDataSource.createPool();
    pool.getPoolProperties().setMaxActive(1);
    pool.getPoolProperties().setInitialSize(1);
    pool.getPoolProperties().setMaxIdle(1);
    pool.getPoolProperties().setMinIdle(1);
    pool.getPoolProperties().setTestOnBorrow(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-07
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多