mirror of https://github.com/telemt/telemt.git
feat: make max_connections configurable via [server] section
The concurrent connection limit was hardcoded to 10,000. Add server.max_connections config option (default: 10000, 0 = unlimited).
This commit is contained in:
parent
4d8a5ca174
commit
b6206a6dfe
|
|
@ -147,6 +147,10 @@ pub(crate) fn default_proxy_protocol_header_timeout_ms() -> u64 {
|
||||||
500
|
500
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn default_server_max_connections() -> u32 {
|
||||||
|
10_000
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn default_prefer_4() -> u8 {
|
pub(crate) fn default_prefer_4() -> u8 {
|
||||||
4
|
4
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1167,6 +1167,11 @@ pub struct ServerConfig {
|
||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub listeners: Vec<ListenerConfig>,
|
pub listeners: Vec<ListenerConfig>,
|
||||||
|
|
||||||
|
/// Maximum number of concurrent client connections.
|
||||||
|
/// 0 means unlimited.
|
||||||
|
#[serde(default = "default_server_max_connections")]
|
||||||
|
pub max_connections: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ServerConfig {
|
impl Default for ServerConfig {
|
||||||
|
|
@ -1184,6 +1189,7 @@ impl Default for ServerConfig {
|
||||||
metrics_whitelist: default_metrics_whitelist(),
|
metrics_whitelist: default_metrics_whitelist(),
|
||||||
api: ApiConfig::default(),
|
api: ApiConfig::default(),
|
||||||
listeners: Vec::new(),
|
listeners: Vec::new(),
|
||||||
|
max_connections: default_server_max_connections(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -349,8 +349,13 @@ pub async fn run() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||||
let beobachten = Arc::new(BeobachtenStore::new());
|
let beobachten = Arc::new(BeobachtenStore::new());
|
||||||
let rng = Arc::new(SecureRandom::new());
|
let rng = Arc::new(SecureRandom::new());
|
||||||
|
|
||||||
// Connection concurrency limit
|
// Connection concurrency limit (0 = unlimited)
|
||||||
let max_connections = Arc::new(Semaphore::new(10_000));
|
let max_connections_limit = if config.server.max_connections == 0 {
|
||||||
|
Semaphore::MAX_PERMITS
|
||||||
|
} else {
|
||||||
|
config.server.max_connections as usize
|
||||||
|
};
|
||||||
|
let max_connections = Arc::new(Semaphore::new(max_connections_limit));
|
||||||
|
|
||||||
let me2dc_fallback = config.general.me2dc_fallback;
|
let me2dc_fallback = config.general.me2dc_fallback;
|
||||||
let me_init_retry_attempts = config.general.me_init_retry_attempts;
|
let me_init_retry_attempts = config.general.me_init_retry_attempts;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue