diff --git a/src/binaries/Cargo.toml b/src/binaries/Cargo.toml index f21975cb2cc5b..074734fcd2638 100644 --- a/src/binaries/Cargo.toml +++ b/src/binaries/Cargo.toml @@ -57,6 +57,8 @@ tokio-stream = "0.1.10" tonic = "0.8.1" tracing = "0.1.36" url = "2.3.1" +limits_rs = "0.1.0" +sysinfo = "0.26.5" [[bin]] name = "databend-meta" diff --git a/src/binaries/query/main.rs b/src/binaries/query/main.rs index c1aa756833690..76e4bf61e9b9d 100644 --- a/src/binaries/query/main.rs +++ b/src/binaries/query/main.rs @@ -34,7 +34,10 @@ use databend_query::servers::MySQLHandler; use databend_query::servers::Server; use databend_query::servers::ShutdownHandle; use databend_query::GlobalServices; +use limits_rs::get_own_limits; +use sysinfo::set_open_files_limit; use tracing::info; +use tracing::warn; #[databend_main] async fn main(_global_tracker: Arc) -> common_exception::Result<()> { @@ -73,6 +76,17 @@ async fn main(_global_tracker: Arc) -> common_exception::Result< init_default_metrics_recorder(); set_panic_hook(); + let limits = get_own_limits().unwrap(); + let max_open_files_soft_limit = limits.max_open_files.soft; + match max_open_files_soft_limit { + Some(limit) => { + if limit < 65535 && set_open_files_limit(65535) { + warn!("Open files limit has been set to {}", 65535); + } + } + None => {} + } + GlobalServices::init(conf.clone()).await?; let mut shutdown_handle = ShutdownHandle::create()?;