配置项作用 #
monitor.rollup.stats_refresh_interval 配置项用于控制Rollup 任务统计信息的定期刷新间隔时间。
此配置决定了系统多久从 .easysearch-ilm-config 索引中获取和缓存一次滚动任务统计信息,包括处理的页面数、文档数、索引时间等指标。
配置项属性 #
- 配置路径:
monitor.rollup.stats_refresh_interval - 数据类型:
TimeValue(时间值) - 默认值:
5s(5秒) - 最小值:
1s(理论) - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 否(需要重启节点生效)
配置项详解 #
工作机制 #
Rollup 统计刷新机制
定时任务 (scheduleWithFixedDelay):
上次刷新完成
│
↓ 等待 refresh_interval
│
↓
触发本次刷新
│
├── 检查 Rollup 插件是否安装
├── 检查集群状态
├── 检查索引是否存在
├── 发送 cluster:admin/monitor/rollup/stats 请求
├── 获取 Rollup 任务统计信息
└── 缓存统计结果
│
↓ 刷新完成
↓
等待 refresh_interval
│
↓ (循环)
示例 (refresh_interval = 5s):
00:00 ──→ 刷新 1 开始
00:00 ──→ 刷新 1 完成
00:05 ──→ 刷新 2 开始
00:05 ──→ 刷新 2 完成
00:10 ──→ 刷新 3 开始
...
Rollup 统计信息内容 #
Rollup 统计包含的数据
1. 处理统计
├── pages_processed
│ └── 已处理的页面数量
├── documents_processed
│ └── 已处理的原始文档数量
└── rollups_indexed
└── 已索引的滚动文档数量
2. 时间统计
├── index_time_in_millis
│ └── 索引滚动文档花费的总时间
└── search_time_in_millis
└── 查询/聚合实时文档花费的总时间
3. 任务状态
├── 任务 ID
├── 任务状态
└── 任务配置
4. 其他信息
├── 时间戳
├── 节点信息
└── 索引信息
禁用定期刷新 #
设置 <= 0 可以禁用定期刷新
refresh_interval <= 0:
│
↓
logger.info("Rollup stats periodic refresh is disabled (interval is non-positive).")
│
↓
定时任务不启动
│
↓
不自动刷新统计信息
配置建议 #
生产环境(默认) #
monitor:
rollup:
stats_refresh_interval: 5s # 默认值
建议: 保持默认值 5s。平衡实时性和开销。
减少刷新频率 #
monitor:
rollup:
stats_refresh_interval: 10s # 减少刷新
建议: 设置为 10-30s。Rollup 任务不频繁时使用。
高频刷新 #
monitor:
rollup:
stats_refresh_interval: 1s # 更频繁
建议: 设置为 1-3s。需要实时监控 Rollup 状态时使用。
禁用自动刷新 #
monitor:
rollup:
stats_refresh_interval: -1 # 禁用
建议: 设置为 -1 或 0s。不需要自动刷新时使用。
代码示例 #
easysearch.yml 基础配置 #
monitor:
rollup:
stats_refresh_interval: 5s
标准生产配置 #
monitor:
rollup:
stats_refresh_interval: 5s
低频率配置 #
monitor:
rollup:
stats_refresh_interval: 30s
禁用自动刷新配置 #
monitor:
rollup:
stats_refresh_interval: -1
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
monitor.rollup.stats_refresh_interval | Rollup 统计刷新间隔 | 5s |
rollup.* | Rollup 任务配置 | - |
性能影响分析 #
| stats_refresh_interval 设置 | 优点 | 缺点 |
|---|---|---|
| -1/0s | 无开销 | 无自动监控 |
| 1-3s | 实时监控 | 较高查询开销 |
| 5s(默认) | 平衡监控和开销 | 标准设置 |
| 10-30s | 低查询开销 | 监控延迟 |
| 60s+ | 最低查询开销 | 延迟较大 |
查询开销对比 #
不同间隔的查询开销
refresh_interval = 5s (默认):
├── 每分钟查询: 12 次
├── 单次开销: ~10ms (查询 .easysearch-ilm-config)
└── 每分钟开销: ~120ms (0.2%)
refresh_interval = 1s:
├── 每分钟查询: 60 次
├── 单次开销: ~10ms
└── 每分钟开销: ~600ms (1%)
refresh_interval = 10s:
├── 每分钟查询: 6 次
├── 单次开销: ~10ms
└── 每分钟开销: ~60ms (0.1%)
refresh_interval = 30s:
├── 每分钟查询: 2 次
├── 单次开销: ~10ms
└── 每分钟开销: ~20ms (0.03%)
使用场景 #
推荐使用默认值的场景 #
- 标准 Rollup: 正常的 Rollup 任务运行
- 定期监控: 需要定期了解任务状态
- 平衡需求: 平衡实时性和开销
推荐增加间隔的场景 #
- 少量任务: Rollup 任务数量很少
- 减少开销: 希望减少查询开销
- 长期任务: 长期运行的 Rollup 任务
推荐减少间隔的场景 #
- 频繁监控: 需要实时监控任务状态
- 调试 Rollup: 正在调试 Rollup 任务
- 关键任务: Rollup 任务非常关键
推荐禁用的场景 #
- 不需要监控: 不需要自动监控 Rollup
- 手动查询: 只需要时手动查询
- 节省资源: 希望节省集群资源
Rollup 任务监控 #
监控 Rollup 任务的重要性
监控指标:
pages_processed:
├── 反映处理的页面数量
├── 持续增加 → 任务正常 ✅
└── 不变 → 可能有问题 ⚠️
documents_processed:
├── 反映处理的文档数量
├── 与源数据增长匹配
└── 可预测处理速度
rollups_indexed:
├── 反映生成的滚动文档数量
├── 持续增长 → 任务正常 ✅
└── 不变 → 可能有问题 ⚠️
index_time_in_millis:
├── 反映索引耗时
├── 突然增加 → 性能问题 ⚠️
└── 持续高位 → 需要优化
search_time_in_millis:
├── 反映查询耗时
├── 突然增加 → 源数据问题 ⚠️
└── 持续高位 → 需要优化
数据延迟分析 #
监控数据的延迟
refresh_interval = 5s (默认):
00:00 ──→ Rollup 统计: pages=1000
00:02 ──→ Rollup 统计: pages=2000 (实际变化)
00:03 ──→ 查询 → 返回 1000 (缓存)
00:05 ──→ 缓存刷新 → 获取到 2000
00:06 ──→ 查询 → 返回 2000 ✅
延迟: 最多 5 秒
refresh_interval = 30s:
00:00 ──→ Rollup 统计: pages=1000
00:10 ──→ Rollup 统计: pages=2000 (实际变化)
00:15 ──→ 查询 → 返回 1000 (缓存)
00:30 ──→ 缓存刷新 → 获取到 2000
00:35 ──→ 查询 → 返回 2000 ✅
延迟: 最多 30 秒
刷新流程详解 #
fetchAndCacheStats() 流程
1. 检查前置条件
├── Rollup 插件是否安装
├── 集群状态是否正常
└── 索引是否存在且状态正常
2. 发送统计请求
cluster:admin/monitor/rollup/stats
├── 目标: .easysearch-ilm-config 索引
├── 获取所有 Rollup 任务统计
└── 返回统计结果
3. 缓存统计结果
├── 更新内部缓存
├── 供 API 查询使用
└── 记录时间戳
4. 错误处理
├── 索引不存在 → 记录警告,继续
├── 插件未安装 → 记录警告,继续
└── 请求失败 → 记录错误,继续
注意事项 #
默认值: 默认值为
5s,适合大多数场景。禁用设置: 设置为
<= 0会禁用定期刷新。需要重启: 修改此配置需要重启节点。
固定延迟: 使用
scheduleWithFixedDelay策略。索引依赖: 需要
.easysearch-ilm-config索引。插件依赖: 需要 Rollup 插件安装。
查询开销: 刷新会查询集群状态。
监控建议: 根据任务数量调整间隔。
测试验证: 配置变更后应验证刷新效果。
手动查询: 禁用后仍可手动查询统计。
相关 API #
获取 Rollup 统计的 API
手动查询统计:
GET /_rollup/stats
响应:
{
"jobs": [
{
"job_id": "rollup_job_1",
"status": "started",
"stats": {
"pages_processed": 1000,
"documents_processed": 100000,
"rollups_indexed": 50000,
"index_time_in_millis": 5000,
"search_time_in_millis": 2000
}
}
]
}
监控集成:
├── Prometheus Exporter
├── 自定义监控脚本
└── 运维平台集成





