diff --git a/src/servers/src/http.rs b/src/servers/src/http.rs index 0a8dd839fa..1e9660e938 100644 --- a/src/servers/src/http.rs +++ b/src/servers/src/http.rs @@ -728,7 +728,9 @@ impl Server for HttpServer { app = configurator.config_http(app); } let app = self.build(app); - let server = axum::Server::bind(&listening).serve(app.into_make_service()); + let server = axum::Server::bind(&listening) + .tcp_nodelay(true) + .serve(app.into_make_service()); *shutdown_tx = Some(tx); diff --git a/src/servers/src/mysql/server.rs b/src/servers/src/mysql/server.rs index 65af7e2869..0dd9af79dd 100644 --- a/src/servers/src/mysql/server.rs +++ b/src/servers/src/mysql/server.rs @@ -19,6 +19,7 @@ use std::sync::Arc; use async_trait::async_trait; use auth::UserProviderRef; use common_runtime::Runtime; +use common_telemetry::error; use common_telemetry::logging::{info, warn}; use futures::StreamExt; use metrics::{decrement_gauge, increment_gauge}; @@ -137,6 +138,9 @@ impl MysqlServer { match tcp_stream { Err(error) => warn!("Broken pipe: {}", error), // IoError doesn't impl ErrorExt. Ok(io_stream) => { + if let Err(e) = io_stream.set_nodelay(true) { + error!(e; "Failed to set TCP nodelay"); + } if let Err(error) = Self::handle(io_stream, io_runtime, spawn_ref, spawn_config).await { diff --git a/src/servers/src/opentsdb.rs b/src/servers/src/opentsdb.rs index 7c569cc2ff..61ed841670 100644 --- a/src/servers/src/opentsdb.rs +++ b/src/servers/src/opentsdb.rs @@ -81,6 +81,9 @@ impl OpentsdbServer { async move { match stream { Ok(stream) => { + if let Err(e) = stream.set_nodelay(true) { + error!(e; "Failed to set TCP nodelay"); + } let connection = Connection::new(stream); let mut handler = Handler::new(query_handler, connection, shutdown);