Sql Azure и пул подключений JDBC

Разрешает ли SQL Azure использование стороннего пула соединений, такого как HikariCP или BoneCP? Мы настроили HikariCP, он работает, когда мы просто запускаем приложение, но позже БД не отвечает на запрос. Это проблема HikariCP или это обычная проблема с пулом соединений, и нет необходимости тратить больше времени на расследование?

 HikariConfig config = new HikariConfig();
    config.setMaximumPoolSize(50);

    config.setDriverClassName(env.getProperty("jdbc.driverClassName"));
    config.setJdbcUrl(env.getProperty("jdbc.url"));
    config.setUsername(env.getProperty("jdbc.user"));
    config.setPassword(env.getProperty("jdbc.pass"));


    config.addDataSourceProperty("cachePrepStmts", env.getProperty("jdbc.cachePrepStmts"));
    config.addDataSourceProperty("prepStmtCacheSize", env.getProperty("jdbc.prepStmtCacheSize"));
    config.addDataSourceProperty("prepStmtCacheSqlLimit", env.getProperty("jdbc.prepStmtCacheSqlLimit"));
    config.addDataSourceProperty("useServerPrepStmts", env.getProperty("jdbc.useServerPrepStmts"));

person Diyko    schedule 24.03.2015    source источник


Ответы (2)


См. эту SQL страницу Azure, посвященную ограничениям подключения.

Максимально допустимая продолжительность может меняться в зависимости от использования ресурсов. Вошедший в систему сеанс, который бездействовал в течение 30 минут, будет автоматически завершен. Настоятельно рекомендуется использовать пул соединений и всегда закрывать соединение по завершении его использования, чтобы неиспользуемое соединение возвращалось в пул. Дополнительные сведения о пулах соединений см. в разделе Пулы соединений.

Проверьте, есть ли какие-либо из этих ошибок соответствует вашим логам. Найдите на этой странице слова «прекращено» и «занято», чтобы найти коды ошибок, которые могут иметь отношение к вашей проблеме.

Я бы предложил установить свойство maxLifetime в HikariCP на 15 минут, а idleTimeout на 2 минуты.

person brettw    schedule 28.03.2015

На стороне SQL Azure нет ничего, что запрещало бы вам использовать сторонний пул соединений. Я предполагаю, что соединение между сервером и клиентом не удалось, и клиент не удалил соединение из пула.

Двигаясь вперед, я бы удостоверился, что какой бы пул соединений 3-й части вы в конечном итоге не использовали, проверяет, существует ли соединение, прежде чем выводить его из пула для использования.

Надеюсь, это поможет.

person ckarst    schedule 25.03.2015
comment
Я сбросил пул, и проблема исчезла. Я попытался настроить удаление неактивного соединения на HikariCP, но это не сработало. - person Diyko; 26.03.2015