Шаблон Spring JDBC с конфигурацией пула соединений BoneCP

У меня есть одно приложение Java Spring с MySQL в качестве базы данных. Предел соединения MySQL составляет приблизительно 12 КБ. Но мое текущее приложение содержит только базовую конфигурацию, поэтому мой MySQL зависает, когда клиентское соединение достигло только соединения 1500–1600. Кто-нибудь знает, как настроить пул соединений BoneCP для моего текущего MySQL.

Конфигурация

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value=“{URL}”/>    
<property name="username" value=“{USER}”/>
<property name="password" value=“{PASSWORD}”/>
<property name="idleConnectionTestPeriodInMinutes" value="60"/>
<property name="idleMaxAgeInMinutes" value="240"/>
<property name="maxConnectionsPerPartition" value="30"/>
<property name="minConnectionsPerPartition" value="10"/>
<property name="partitionCount" value="3"/>
<property name="acquireIncrement" value="5"/>
<property name="statementsCacheSize" value="100"/>
<property name="releaseHelperThreads" value="3"/>
<property name="connectionTestStatement" value="Select    1"/>
</bean>

person Hitendra Boda    schedule 09.01.2017    source источник
comment
С вашей текущей конфигурацией ваше приложение будет использовать максимум 90 соединений, вы уверены, что ваш код закрывает соединения (которые возвращают соединения в пул)?   -  person Mark Rotteveel    schedule 09.01.2017
comment
Спасибо. Я использую шаблон Spring JDBC, поэтому я думаю, что шаблон Spring JDBC внутренне обрабатывает для тесного соединения. У меня есть 10 серверов под моим балансировщиком нагрузки, поэтому, пожалуйста, скажите мне, какие значения для конфигурации   -  person Hitendra Boda    schedule 09.01.2017


Ответы (1)


Пожалуйста, посмотрите эту обновленную конфигурацию, спасибо.

  public static void main(String[] args) {

    BoneCP connectionPool = null;
    Connection connection = null;

    try {
        // load the database driver (make sure this is in your classpath!)
        Class.forName("org.hsqldb.jdbcDriver");
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }

    try {

        // setup the connection pool
        BoneCPConfig config = new BoneCPConfig();
        config.setJdbcUrl("jdbc:hsqldb:mem:test");
        // url
        // specific to
        // your database
        config.setUsername("sa");
        config.setPassword("");
        config.setMinConnectionsPerPartition(50);
        config.setMaxConnectionsPerPartition(200);
        config.setPartitionCount(50);
        config.setLazyInit(false);
        connectionPool = new BoneCP(config); // setup the connection pool
        for (int i = 0; i < 200000; i++) {
            connection = connectionPool.getConnection(); // fetch a //connection
            System.out.println("Connection" + connection);

            if (connection != null) {
                System.out.println("Number of Connection successful " + i);
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS"); // do
                // something
                // with
                // the
                // connection.
                while (rs.next()) {
                    System.out.println(rs.getString(1)); // should print out
                    // "1"'
                }

            }
        }
        connectionPool.shutdown(); // shutdown connection pool.
    } catch (SQLException ex) {
        ex.printStackTrace();
    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

}

person Vipul Panth    schedule 09.01.2017
comment
Спасибо. Но я понятия не имею о значении следующих полей idleConnectionTestPeriodInMinutes, idleMaxAgeInMinutes, maxConnectionsPerPartition, minConnectionsPerPartition, partitionCount, acquireIncrement, statementsCacheSize, releaseHelperThreads для ограничения подключения mysql до 12000. - person Hitendra Boda; 09.01.2017
comment
Можете ли вы поделиться текущей конфигурацией? - person Vipul Panth; 09.01.2017
comment
Это вообще не отвечает на вопрос; вы просто сбрасываете какой-то случайный код конфигурации. - person Mark Rotteveel; 09.01.2017
comment
я увеличил MinConnectionsPerPartition до 50 и MaxConnectionsPerPartition до 100 и PartitionCount до 50, это даст мне около 12000 соединений из пула, для целей тестирования я использую базу данных hsql, и поскольку документация для BoneCp слаба, не могу найти другие способы, вы можете проверьте с базой данных mysql и проверьте это, спасибо - person Vipul Panth; 09.01.2017