1

SQL Azure 是否允许像 HikariCP 或 BoneCP 这样的 3-rd 方连接池?我们配置了 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"));
4

2 回答 2

2

请参阅此 SQL Azure 页面:连接约束。

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

查看这些错误中的任何一个是否与您的日志匹配。在该页面中搜索“已终止”和“忙碌”以查找可能与您的问题相关的错误代码。

我建议将maxLifetimeHikariCP 中的属性设置为 15 分钟,然后设置idleTimeout为 2 分钟。

于 2015-03-28T14:04:04.730 回答
1

SQL Azure 端没有任何东西会禁止您使用 3rd 方连接池。我的猜测是服务器和客户端之间的连接失败,并且客户端没有从池中删除连接。

展望未来,我将确保您最终使用连接存在的任何第 3 部分连接池测试连接是否存在,然后再将其从池中取出以供使用。

希望有帮助。

于 2015-03-25T20:46:44.987 回答