Sql Azure和JDBC连接池

时间:2015-03-24 11:50:47

标签: jdbc azure-sql-database connection-pooling hikaricp

SQL Azure是否允许像HikariCP或BoneCP这样的第三方连接池? 我们配置HikariCP它只在我们运行应用程序时工作,但后来db没有响应请求。它是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"));

2 个答案:

答案 0 :(得分:2)

请参阅此SQL Azure page re:连接约束。

  

最大允许持续时间可能会根据资源使用情况而有所变化。   已空闲30分钟的登录会话将被终止   自动。 我们强烈建议您使用连接池 和   完成使用后始终关闭连接,以便未使用   连接将返回池中。有关连接的更多信息   合并,请参阅连接池。

查看these errors是否符合您的日志。搜索该页面"已终止"并且"忙碌"查找可能与您的问题相关的错误代码。

我建议将HikariCP中的maxLifetime属性设置为15分钟,将idleTimeout设置为2分钟。

答案 1 :(得分:1)

SQL Azure端没有任何内容可以阻止您使用第三方连接池。我的猜测是服务器和客户端之间的连接失败,客户端没有从池中删除连接。

继续前进,我确保您最终使用连接所存在的第三部分连接池,然后再将其从池中取出以供使用。

希望有所帮助。