This commit is contained in:
Mateusz Gruszczyński committed 2026-10-05 10:58:50 +02:00
1 parent c819f0a335
commit e1a59f6e56
53 files changed
+817 -380

No files matched your search

+19 -1
View File
@@ -54,6 +54,16 @@ pub struct Keepalive {
pub idle_timeout_seconds: u64,
pub max_idle_per_host: usize,
pub tcp_keepalive_seconds: u64,
/// Rebuild a backend Hyper client after this many requests. The counter is
/// per backend/client generation, not per TCP connection. Zero disables
/// request-count based recycling.
pub pool_recycle_requests: u64,
/// Maximum age of one backend Hyper client generation. Zero disables
/// time-based recycling.
pub pool_recycle_seconds: u64,
/// Bound Hyper's adaptive HTTP/1 read buffer per connection. Hyper requires
/// at least 8192 bytes. This affects upstream HTTP/1 only.
pub http1_max_buffer_bytes: usize,
}
impl Default for Keepalive {
fn default() -> Self {
@@ -62,6 +72,9 @@ impl Default for Keepalive {
idle_timeout_seconds: 30,
max_idle_per_host: 4,
tcp_keepalive_seconds: 30,
pool_recycle_requests: 25_000,
pool_recycle_seconds: 3_600,
http1_max_buffer_bytes: 131_072,
}
}
}
@@ -255,7 +268,12 @@ impl Settings {
ensure!(
(1..=3600).contains(&k.idle_timeout_seconds)
&& (1..=3600).contains(&k.tcp_keepalive_seconds)
&& (1..=64).contains(&k.max_idle_per_host),
&& (1..=64).contains(&k.max_idle_per_host)
&& (k.pool_recycle_requests == 0
|| (1_000..=10_000_000).contains(&k.pool_recycle_requests))
&& (k.pool_recycle_seconds == 0
|| (60..=604_800).contains(&k.pool_recycle_seconds))
&& (8_192..=1_048_576).contains(&k.http1_max_buffer_bytes),
"invalid keepalive limits"
);
ensure!(