chore(capacity): update default refresh tuning (#6938)

Align object-capacity refresh defaults with the production-oriented environment values and keep docs, script examples, and tests in sync.

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-08-31 14:43:59 +08:00
committed by GitHub
parent 59a7194d7f
commit bb37841362
6 changed files with 56 additions and 44 deletions
+20 -8
View File
@@ -59,20 +59,20 @@ pub const ENV_CAPACITY_MAX_TIMEOUT: &str = "RUSTFS_CAPACITY_MAX_TIMEOUT";
// ============================================================================ // ============================================================================
/// Scheduled update interval in seconds /// Scheduled update interval in seconds
/// Default: 120 seconds (2 minutes) /// Default: 600 seconds (10 minutes)
pub const DEFAULT_SCHEDULED_UPDATE_INTERVAL_SECS: u64 = 120; pub const DEFAULT_SCHEDULED_UPDATE_INTERVAL_SECS: u64 = 600;
/// Write trigger delay in seconds /// Write trigger delay in seconds
/// Default: 5 seconds /// Default: 30 seconds
pub const DEFAULT_WRITE_TRIGGER_DELAY_SECS: u64 = 5; pub const DEFAULT_WRITE_TRIGGER_DELAY_SECS: u64 = 30;
/// Write frequency threshold (writes per minute) /// Write frequency threshold (writes per minute)
/// Default: 5 writes/minute /// Default: 20 writes/minute
pub const DEFAULT_WRITE_FREQUENCY_THRESHOLD: usize = 5; pub const DEFAULT_WRITE_FREQUENCY_THRESHOLD: usize = 20;
/// Fast update threshold in seconds /// Fast update threshold in seconds
/// Default: 30 seconds /// Default: 120 seconds
pub const DEFAULT_FAST_UPDATE_THRESHOLD_SECS: u64 = 30; pub const DEFAULT_FAST_UPDATE_THRESHOLD_SECS: u64 = 120;
/// Maximum files threshold for sampling /// Maximum files threshold for sampling
/// Default: 200,000 files /// Default: 200,000 files
@@ -129,4 +129,16 @@ mod tests {
assert_eq!(ENV_CAPACITY_MIN_TIMEOUT, "RUSTFS_CAPACITY_MIN_TIMEOUT"); assert_eq!(ENV_CAPACITY_MIN_TIMEOUT, "RUSTFS_CAPACITY_MIN_TIMEOUT");
assert_eq!(ENV_CAPACITY_MAX_TIMEOUT, "RUSTFS_CAPACITY_MAX_TIMEOUT"); assert_eq!(ENV_CAPACITY_MAX_TIMEOUT, "RUSTFS_CAPACITY_MAX_TIMEOUT");
} }
#[test]
fn test_capacity_default_values() {
assert_eq!(DEFAULT_SCHEDULED_UPDATE_INTERVAL_SECS, 600);
assert_eq!(DEFAULT_WRITE_TRIGGER_DELAY_SECS, 30);
assert_eq!(DEFAULT_WRITE_FREQUENCY_THRESHOLD, 20);
assert_eq!(DEFAULT_FAST_UPDATE_THRESHOLD_SECS, 120);
assert_eq!(DEFAULT_MAX_FILES_THRESHOLD, 200_000);
assert_eq!(DEFAULT_STAT_TIMEOUT_SECS, 3);
assert_eq!(DEFAULT_SAMPLE_RATE, 200);
assert_eq!(DEFAULT_CAPACITY_METRICS_INTERVAL_SECS, 600);
}
} }
+4 -4
View File
@@ -282,10 +282,10 @@ The configuration constants are defined in `crates/config/src/constants/capacity
| Environment Variable | Default | Description | | Environment Variable | Default | Description |
| --- | --- | --- | | --- | --- | --- |
| `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` | `120s` | Scheduled refresh interval | | `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` | `600s` | Scheduled refresh interval |
| `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` | `5s` | Debounce delay after writes | | `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` | `30s` | Debounce delay after writes |
| `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` | `5` | Recent 60-second write-frequency threshold | | `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` | `20` | Recent 60-second write-frequency threshold |
| `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` | `30s` | Cache age required before fast refresh is considered | | `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` | `120s` | Cache age required before fast refresh is considered |
| `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` | `200000` | Exact-count file threshold | | `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` | `200000` | Exact-count file threshold |
| `RUSTFS_CAPACITY_STAT_TIMEOUT` | `3s` (`60s` with `RUSTFS_DRIVE_TIMEOUT_PROFILE=high_latency`) | Base scan timeout | | `RUSTFS_CAPACITY_STAT_TIMEOUT` | `3s` (`60s` with `RUSTFS_DRIVE_TIMEOUT_PROFILE=high_latency`) | Base scan timeout |
| `RUSTFS_CAPACITY_SAMPLE_RATE` | `200` | Overflow-file sampling interval | | `RUSTFS_CAPACITY_SAMPLE_RATE` | `200` | Overflow-file sampling interval |
+4 -4
View File
@@ -282,10 +282,10 @@ get_capacity_manager()
| 环境变量 | 默认值 | 说明 | | 环境变量 | 默认值 | 说明 |
| --- | --- | --- | | --- | --- | --- |
| `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` | `120s` | 定时刷新间隔 | | `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` | `600s` | 定时刷新间隔 |
| `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` | `5s` | 写后防抖延迟 | | `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` | `30s` | 写后防抖延迟 |
| `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` | `5` | 最近 60 秒写频率阈值 | | `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` | `20` | 最近 60 秒写频率阈值 |
| `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` | `30s` | 缓存超过该年龄后才考虑快速刷新 | | `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` | `120s` | 缓存超过该年龄后才考虑快速刷新 |
| `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` | `200000` | 精确统计文件数阈值 | | `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` | `200000` | 精确统计文件数阈值 |
| `RUSTFS_CAPACITY_STAT_TIMEOUT` | `3s` | 基础扫描超时 | | `RUSTFS_CAPACITY_STAT_TIMEOUT` | `3s` | 基础扫描超时 |
| `RUSTFS_CAPACITY_SAMPLE_RATE` | `200` | overflow 文件采样间隔 | | `RUSTFS_CAPACITY_SAMPLE_RATE` | `200` | overflow 文件采样间隔 |
@@ -1705,22 +1705,22 @@ mod tests {
( (
ENV_CAPACITY_SCHEDULED_INTERVAL, ENV_CAPACITY_SCHEDULED_INTERVAL,
|| get_scheduled_update_interval().as_secs(), || get_scheduled_update_interval().as_secs(),
120, 600,
"600", "600",
600, 600,
), ),
(ENV_CAPACITY_WRITE_TRIGGER_DELAY, || get_write_trigger_delay().as_secs(), 5, "20", 20), (ENV_CAPACITY_WRITE_TRIGGER_DELAY, || get_write_trigger_delay().as_secs(), 30, "20", 20),
( (
ENV_CAPACITY_WRITE_FREQUENCY_THRESHOLD, ENV_CAPACITY_WRITE_FREQUENCY_THRESHOLD,
|| get_write_frequency_threshold() as u64, || get_write_frequency_threshold() as u64,
5, 20,
"20", "20",
20, 20,
), ),
( (
ENV_CAPACITY_FAST_UPDATE_THRESHOLD, ENV_CAPACITY_FAST_UPDATE_THRESHOLD,
|| get_fast_update_threshold().as_secs(), || get_fast_update_threshold().as_secs(),
30, 120,
"120", "120",
120, 120,
), ),
@@ -2773,10 +2773,10 @@ mod tests {
let config = HybridStrategyConfig::from_env(); let config = HybridStrategyConfig::from_env();
// Check default values // Check default values
assert_eq!(config.scheduled_update_interval, Duration::from_secs(120)); assert_eq!(config.scheduled_update_interval, Duration::from_secs(600));
assert_eq!(config.write_trigger_delay, Duration::from_secs(5)); assert_eq!(config.write_trigger_delay, Duration::from_secs(30));
assert_eq!(config.write_frequency_threshold, 5); assert_eq!(config.write_frequency_threshold, 20);
assert_eq!(config.fast_update_threshold, Duration::from_secs(30)); assert_eq!(config.fast_update_threshold, Duration::from_secs(120));
assert!(config.enable_smart_update); assert!(config.enable_smart_update);
assert!(config.enable_write_trigger); assert!(config.enable_write_trigger);
} }
+4 -4
View File
@@ -23,10 +23,10 @@
//! ## Configuration //! ## Configuration
//! //!
//! All configuration is via environment variables (see `rustfs_config`): //! All configuration is via environment variables (see `rustfs_config`):
//! - `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` - Update interval in seconds (default: 120) //! - `RUSTFS_CAPACITY_SCHEDULED_INTERVAL` - Update interval in seconds (default: 600)
//! - `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` - Write trigger delay (default: 5s) //! - `RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY` - Write trigger delay (default: 30s)
//! - `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` - Write frequency threshold (default: 5 writes/min) //! - `RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD` - Write frequency threshold (default: 20 writes/min)
//! - `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` - Fast update threshold (default: 30s) //! - `RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD` - Fast update threshold (default: 120s)
//! - `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` - Max files before sampling (default: 200,000) //! - `RUSTFS_CAPACITY_MAX_FILES_THRESHOLD` - Max files before sampling (default: 200,000)
//! - `RUSTFS_CAPACITY_STAT_TIMEOUT` - Stat operation timeout (default: 3s) //! - `RUSTFS_CAPACITY_STAT_TIMEOUT` - Stat operation timeout (default: 3s)
//! - `RUSTFS_CAPACITY_SAMPLE_RATE` - Sampling rate for metrics (default: 200) //! - `RUSTFS_CAPACITY_SAMPLE_RATE` - Sampling rate for metrics (default: 200)
+16 -16
View File
@@ -312,46 +312,46 @@ export RUSTFS_TRUST_SYSTEM_CA=true
# --- Basic Configuration --- # --- Basic Configuration ---
# Scheduled update interval (seconds) # Scheduled update interval (seconds)
# How often to perform full capacity recalculation # How often to perform full capacity recalculation
# Default: 300 (5 minutes) # Default: 600 (10 minutes)
# Recommended: 300-600 for production, 60-120 for testing # Recommended: 300-600 for production, 60-120 for testing
export RUSTFS_CAPACITY_SCHEDULED_INTERVAL=300 export RUSTFS_CAPACITY_SCHEDULED_INTERVAL=600
# Write trigger delay (seconds) # Write trigger delay (seconds)
# Delay after write operation before triggering capacity update # Delay after write operation before triggering capacity update
# Default: 10 # Default: 30
# Recommended: 5-15 # Recommended: 5-30
export RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY=10 export RUSTFS_CAPACITY_WRITE_TRIGGER_DELAY=30
# Write frequency threshold (writes per minute) # Write frequency threshold (writes per minute)
# Threshold for triggering fast updates during high write frequency # Threshold for triggering fast updates during high write frequency
# Default: 10 # Default: 20
# Recommended: 5-20 # Recommended: 5-20
export RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD=10 export RUSTFS_CAPACITY_WRITE_FREQUENCY_THRESHOLD=20
# Fast update threshold (seconds) # Fast update threshold (seconds)
# Cache age threshold for considering data as fresh # Cache age threshold for considering data as fresh
# Default: 60 # Default: 120
# Recommended: 30-120 # Recommended: 30-120
export RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD=60 export RUSTFS_CAPACITY_FAST_UPDATE_THRESHOLD=120
# --- Performance Protection --- # --- Performance Protection ---
# Maximum files threshold # Maximum files threshold
# When file count exceeds this, sampling is used for performance # When file count exceeds this, sampling is used for performance
# Default: 1000000 (1 million) # Default: 200000
# Recommended: 500000-2000000 # Recommended: 200000-2000000
export RUSTFS_CAPACITY_MAX_FILES_THRESHOLD=1000000 export RUSTFS_CAPACITY_MAX_FILES_THRESHOLD=200000
# Statistics timeout (seconds) # Statistics timeout (seconds)
# Maximum time to wait for capacity calculation # Maximum time to wait for capacity calculation
# Default: 5 # Default: 3
# Recommended: 3-10 # Recommended: 3-10
export RUSTFS_CAPACITY_STAT_TIMEOUT=5 export RUSTFS_CAPACITY_STAT_TIMEOUT=3
# Sample rate # Sample rate
# When sampling is enabled, check every N files # When sampling is enabled, check every N files
# Default: 100 # Default: 200
# Recommended: 50-200 # Recommended: 50-200
export RUSTFS_CAPACITY_SAMPLE_RATE=100 export RUSTFS_CAPACITY_SAMPLE_RATE=200
# --- Monitoring Configuration --- # --- Monitoring Configuration ---
# Metrics logging interval (seconds) # Metrics logging interval (seconds)