gpt4 book ai didi

java - HikariPool 达到最大连接数

转载 作者:行者123 更新时间:2023-12-02 00:57:24 24 4
gpt4 key购买 nike

我正在使用 HikariCP 运行 SQLite 数据库。我的配置如下所示:

public class SQLiteDataSource {
private static final HikariConfig config = new HikariConfig();
private static final HikariDataSource ds;

static {


config.setJdbcUrl("jdbc:sqlite:database.db");
config.setConnectionTestQuery("SELECT 1");
config.addDataSourceProperty("cachePrepStmts", true);
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSwlLimit", "2048");
config.setIdleTimeout(10000);
config.setMaxLifetime(30000);
config.setValidationTimeout(30000);
config.setMaximumPoolSize(100);
config.setMinimumIdle(10);
config.setAllowPoolSuspension(false);

ds = new HikariDataSource(config);
}

public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}

方法getConnection()用于从数据库的表中获取数据。这些函数如下所示:

// This is a slightly abreviated function to get a boolean from a table in the database where the primary key "id" matches the one requested

public static Boolean getBoolean(String Id, String column) {
try (final PreparedStatement preparedStatement = SQLiteDataSource.getConnection()
// language=SQLite
.prepareStatement("SELECT " + column + " FROM table WHERE id = ?")) {

preparedStatement.setString(1, Id);

try (final ResultSet resultSet = preparedStatement.executeQuery()) {
if (resultSet.next()) {
Boolean bool = resultSet.getBoolean(setting);
resultSet.close();
preparedStatement.getConnection().close();
return bool;
}
}

preparedStatement.getConnection().close();

} catch (SQLException e) {
e.printStackTrace();
}
return false;
}

每次调用该函数时,PreparedStatement 的连接都会在最后关闭。然而,池大小不断增长,直到达到最大池大小并超时。

有什么方法可以阻止这种情况或强制关闭连接吗?

最佳答案

按照 @Nithin 建议删除 preparedStatement.getConnection().close() ,并在 try-with-resources block 中显式获取连接:

try (Connection con = SQLiteDataSource.getConnection();final PreparedStatement preparedStatement = con
// language=SQLite
.prepareStatement("SELECT " + column + " FROM table WHERE id = ?")) {

这样连接也会在 block 结束时关闭

关于java - HikariPool 达到最大连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61169841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com