--- title: "ILM 作业执行间隔配置" date: 2026-01-20 lastmod: 2026-01-20 description: "index_lifecycle_management.job_interval 配置项用于控制 ILM 任务检查和执行生命周期策略的频率。" tags: ["索引生命周期管理", "ILM", "作业调度", "自动化"] summary: "配置项作用 # index_lifecycle_management.job_interval 配置项用于控制索引生命周期管理(ILM)调度器检查并执行生命周期任务的频率。 ILM 是 Easysearch 中用于自动管理索引生命周期的功能,可以自动执行索引的滚动(rollover)、收缩(shrink)、删除(delete)等操作。 配置项属性 # 配置路径: index_lifecycle_management.job_interval 数据类型: TimeValue(时间值) 默认值: 5m(5分钟) 是否可选: 是 作用域: NodeScope(节点级别) 动态更新: 是(支持动态更新) 配置项详解 # 工作机制 # ILM 任务调度流程 调度器启动 │ ↓ 等待 job_interval(5分钟) │ ↓ 扫描所有托管索引 │ ↓ 检查每个索引的生命周期阶段 │ ├──────── Hot 阶段 │ ↓ │ 检查 rollover 条件 │ │ │ ├─── 条件满足 ──→ 执行 rollover │ │ │ └─── 条件不满足 ──→ 继续 │ ├──────── Warm 阶段 │ ↓ │ 执行收缩、降级操作 │ ├──────── Cold 阶段 │ ↓ │ 执行冻结、归档操作 │ └──────── Delete 阶段 ↓ 执行删除操作 生命周期阶段转换 # 热-温-冷架构的自动转换 时间推移 ──────────────────────────────→ Hot (热数据) │ age < 7d, size < 50GB │ ↓ job_interval 检查 │ ↓ 条件满足 │ Warm (温数据) │ age >= 7d │ ↓ job_interval 检查 │ ↓ 条件满足 │ Cold (冷数据) │ age >= 30d │ ↓ job_interval 检查 │ ↓ 条件满足 │ Delete (删除) │ age >= 365d │ ↓ 索引被删除 与 sweep_period 的区别 # 两个配置的区别 job_interval(作业执行间隔): - 作用: 控制策略执行的检查频率 - 对象: 每个托管索引的策略条件 - 目的: 检查并执行生命周期转换 - 默认: 5 分钟 sweep_period(协调器清理周期): - 作用: 控制协调器的清理操作 - 对象: 托管索引的整体状态 - 目的: 检测异常、重建作业、状态同步 - 默认: 5 分钟(旧版 10 分钟) 配置建议 # 生产环境(默认) # index_lifecycle_management: job_interval: 5m # 默认值 建议: 保持默认值 5m。适用于大多数生产环境。" --- ## 配置项作用 `index_lifecycle_management.job_interval` 配置项用于控制**索引生命周期管理(ILM)调度器检查并执行生命周期任务的频率**。 ILM 是 Easysearch 中用于自动管理索引生命周期的功能,可以自动执行索引的滚动(rollover)、收缩(shrink)、删除(delete)等操作。 ## 配置项属性 - **配置路径**: `index_lifecycle_management.job_interval` - **数据类型**: `TimeValue`(时间值) - **默认值**: `5m`(5分钟) - **是否可选**: 是 - **作用域**: NodeScope(节点级别) - **动态更新**: 是(支持动态更新) ## 配置项详解 ## 工作机制 ``` ILM 任务调度流程 调度器启动 │ ↓ 等待 job_interval(5分钟) │ ↓ 扫描所有托管索引 │ ↓ 检查每个索引的生命周期阶段 │ ├──────── Hot 阶段 │ ↓ │ 检查 rollover 条件 │ │ │ ├─── 条件满足 ──→ 执行 rollover │ │ │ └─── 条件不满足 ──→ 继续 │ ├──────── Warm 阶段 │ ↓ │ 执行收缩、降级操作 │ ├──────── Cold 阶段 │ ↓ │ 执行冻结、归档操作 │ └──────── Delete 阶段 ↓ 执行删除操作 ``` ## 生命周期阶段转换 ``` 热-温-冷架构的自动转换 时间推移 ──────────────────────────────→ Hot (热数据) │ age < 7d, size < 50GB │ ↓ job_interval 检查 │ ↓ 条件满足 │ Warm (温数据) │ age >= 7d │ ↓ job_interval 检查 │ ↓ 条件满足 │ Cold (冷数据) │ age >= 30d │ ↓ job_interval 检查 │ ↓ 条件满足 │ Delete (删除) │ age >= 365d │ ↓ 索引被删除 ``` ## 与 sweep_period 的区别 ``` 两个配置的区别 job_interval(作业执行间隔): - 作用: 控制策略执行的检查频率 - 对象: 每个托管索引的策略条件 - 目的: 检查并执行生命周期转换 - 默认: 5 分钟 sweep_period(协调器清理周期): - 作用: 控制协调器的清理操作 - 对象: 托管索引的整体状态 - 目的: 检测异常、重建作业、状态同步 - 默认: 5 分钟(旧版 10 分钟) ``` ## 配置建议 ## 生产环境(默认) ```yaml index_lifecycle_management: job_interval: 5m # 默认值 ``` **建议**: 保持默认值 `5m`。适用于大多数生产环境。 ## 高频操作场景 ```yaml index_lifecycle_management: job_interval: 1m # 1 分钟 ``` **建议**: 减少到 `1-3m`。当需要更快速响应策略变化时使用。 ## 低负载要求 ```yaml index_lifecycle_management: job_interval: 15m # 15 分钟 ``` **建议**: 增加到 `10-15m`。当希望减少调度开销时使用。 ## 大规模集群 ```yaml index_lifecycle_management: job_interval: 10m # 10 分钟 coordinator: sweep_period: 30m ``` **建议**: 托管索引很多时增加间隔。 ## 代码示例 ## easysearch.yml 基础配置 ```yaml index_lifecycle_management: job_interval: 5m ``` ## 完整 ILM 配置 ```yaml index_lifecycle_management: job_interval: 5m coordinator: sweep_period: 5m ``` ## 快速响应配置 ```yaml index_lifecycle_management: job_interval: 1m coordinator: sweep_period: 2m ``` ## 动态更新配置 ```json PUT /_cluster/settings { "transient": { "index_lifecycle_management.job_interval": "10m" } } ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `index_lifecycle_management.job_interval` | 作业执行间隔 | 5m | | `index_lifecycle_management.coordinator.sweep_period` | 协调器清理周期 | 5m | ## ILM 策略示例 ``` 典型的日志管理策略 Hot 阶段 (热数据): - 条件: 索引大小 > 50GB 或 age > 1d - 操作: rollover 到新索引 - 持续时间: 约 1 天 Warm 阶段 (温数据): - 条件: age > 7d - 操作: 设置为只读、force_merge - 持续时间: 约 23 天 Cold 阶段 (冷数据): - 条件: age > 30d - 操作: 冻结索引、移动到冷存储 - 持续时间: 约 335 天 Delete 阶段 (删除): - 条件: age > 365d - 操作: 删除索引 - 持续时间: 永久 job_interval = 5m: 每 5 分钟检查一次这些条件是否满足 ``` ## 性能影响分析 | job_interval 设置 | 优点 | 缺点 | |-------------------|------|------| | 1m | 快速响应策略变化 | 高调度开销 | | 5m(默认) | 平衡性能和响应 | 标准设置 | | 15m | 低调度开销 | 响应较慢 | | 30m | 最小开销 | 响应很慢 | ## 资源消耗对比 ``` 假设集群有 100 个托管索引 job_interval = 1m: - 每小时检查次数: 60 - 每次扫描: 100 个索引 - 总检查: 6,000 次/小时 - CPU 开销: 高 ❌ job_interval = 5m: - 每小时检查次数: 12 - 每次扫描: 100 个索引 - 总检查: 1,200 次/小时 - CPU 开销: 中等 ✅ job_interval = 15m: - 每小时检查次数: 4 - 每次扫描: 100 个索引 - 总检查: 400 次/小时 - CPU 开销: 低 ✅ ``` ## 使用场景 ## 推荐使用默认值的场景 - **标准日志管理**: 按天滚动的日志索引 - **常规业务**: 不需要极快响应 - **稳定环境**: 集群负载正常 ## 推荐减少间隔的场景 - **快速 rollover**: 需要快速滚动索引 - **高频数据**: 数据增长非常快 - **时间敏感**: 策略转换时间要求严格 ## 推荐增加间隔的场景 - **大规模集群**: 托管索引数量很多 - **负载敏感**: 希望减少调度开销 - **长周期策略**: 策略转换以天为单位 ## 常见 ILM 操作 ``` ILM 支持的操作 Rollover (滚动): - 创建新索引 - 将别名指向新索引 - 条件: 大小、年龄、文档数 Shrink (收缩): - 减少主分片数 - 优化索引结构 - 用于旧数据 Force Merge (强制合并): - 合并段文件 - 释放空间 - 提升查询性能 Freeze (冻结): - 降低内存占用 - 仍可查询 - 写入开销最小 Delete (删除): - 删除整个索引 - 释放存储空间 - 清理过期数据 ``` ## 注意事项 1. **与 sweep_period 协调**: 两个配置需要合理搭配。 2. **动态更新**: 支持动态更新,修改后立即生效。 3. **策略条件**: 确保策略中的条件设置合理。 4. **资源监控**: 监控 ILM 任务对集群资源的影响。 5. **测试验证**: 新策略应在测试环境验证后再部署到生产。 6. **时间精度**: 操作执行的延迟最多为 job_interval 时间。 7. **大批量操作**: 避免大量索引同时触发策略转换。 8. **日志保留**: 确保删除策略符合数据保留要求。 9. **备份策略**: 重要数据删除前应做好备份。 10. **版本兼容**: 确保集群版本支持使用的 ILM 功能。