diff --git a/src/config.rs b/src/config.rs index 9a45298c..fd625f25 100644 --- a/src/config.rs +++ b/src/config.rs @@ -636,9 +636,15 @@ make_config! { /// Timeout when acquiring database connection database_timeout: u64, false, def, 30; - /// Database connection pool size + /// Timeout in seconds before idle connections to the database are closed + database_idle_timeout: u64, false, def, 60; + + /// Database connection max pool size database_max_conns: u32, false, def, 10; + /// Database connection min pool size + database_min_conns: u32, false, def, 2; + /// Database connection init |> SQL statements to run when creating a new database connection, mainly useful for connection-scoped pragmas. If empty, a database-specific default is used. database_conn_init: String, false, def, String::new(); diff --git a/src/db/mod.rs b/src/db/mod.rs index ece6b597..9f5bb150 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -134,6 +134,8 @@ macro_rules! generate_connections { let manager = ConnectionManager::new(&url); let pool = Pool::builder() .max_size(CONFIG.database_max_conns()) + .min_idle(Some(CONFIG.database_min_conns())) + .idle_timeout(Some(Duration::from_secs(CONFIG.database_idle_timeout()))) .connection_timeout(Duration::from_secs(CONFIG.database_timeout())) .connection_customizer(Box::new(DbConnOptions{ init_stmts: conn_type.get_init_stmts()