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"));
答案 0 :(得分:2)
请参阅此SQL Azure page re:连接约束。
最大允许持续时间可能会根据资源使用情况而有所变化。 已空闲30分钟的登录会话将被终止 自动。 我们强烈建议您使用连接池 和 完成使用后始终关闭连接,以便未使用 连接将返回池中。有关连接的更多信息 合并,请参阅连接池。
查看these errors是否符合您的日志。搜索该页面"已终止"并且"忙碌"查找可能与您的问题相关的错误代码。
我建议将HikariCP中的maxLifetime
属性设置为15分钟,将idleTimeout
设置为2分钟。
答案 1 :(得分:1)
SQL Azure端没有任何内容可以阻止您使用第三方连接池。我的猜测是服务器和客户端之间的连接失败,客户端没有从池中删除连接。
继续前进,我确保您最终使用连接所存在的第三部分连接池,然后再将其从池中取出以供使用。
希望有所帮助。