配置项作用 #
jobscheduler.sweeper.page_size 配置项用于控制作业清扫器(Job Sweeper)在扫描作业索引时每次搜索请求获取的文档数量。
清扫器负责定期扫描作业索引,确保调度的作业与集群状态同步。此配置决定了每次搜索请求返回的文档数量,影响清扫器的内存使用和网络开销。
配置项属性 #
- 配置路径:
jobscheduler.sweeper.page_size - 旧版路径:
org.easysearch.jobscheduler.sweeper.page_size(已废弃) - 数据类型:
Integer(整数) - 默认值:
100 - 最小值: 无明确限制(受 Integer 类型约束)
- 最大值: 无明确限制(受 Integer 类型约束)
- 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(支持动态更新)
配置项详解 #
工作机制 #
分页扫描流程
假设有 1000 个作业文档
page_size = 100:
第 1 页: 文档 1-100
│
↓ 搜索请求
返回 100 个文档
│
↓ 处理文档
第 2 页: 文档 101-200
│
↓ 搜索请求
返回 100 个文档
│
↓ 处理文档
...
第 10 页: 文档 901-1000
总共: 10 次搜索请求
page_size = 500:
第 1 页: 文档 1-500
│
↓ 搜索请求
返回 500 个文档
│
↓ 处理文档
第 2 页: 文档 501-1000
总共: 2 次搜索请求
内存使用分析 #
内存占用对比
假设每个文档约 1KB
page_size = 100:
每页内存: 100 × 1KB = 100 KB
峰值内存: ~100 KB ✅
page_size = 500:
每页内存: 500 × 1KB = 500 KB
峰值内存: ~500 KB
page_size = 1000:
每页内存: 1000 × 1KB = 1 MB
峰值内存: ~1 MB
网络开销分析 #
网络请求次数对比
假设有 1000 个作业文档
page_size = 100:
请求次数: 1000 / 100 = 10 次
每次开销: 1ms (网络延迟)
总开销: 10 × 1ms = 10ms
page_size = 500:
请求次数: 1000 / 500 = 2 次
每次开销: 2ms (数据量大,延迟稍高)
总开销: 2 × 2ms = 4ms ✅
page_size = 1000:
请求次数: 1000 / 1000 = 1 次
每次开销: 5ms (数据更大,延迟更高)
总开销: 1 × 5ms = 5ms
配置建议 #
生产环境(默认) #
jobscheduler:
sweeper:
page_size: 100 # 默认值
建议: 保持默认值 100。适用于大多数场景。
大规模集群 #
jobscheduler:
sweeper:
page_size: 500 # 增加分页大小
建议: 增加到 500-1000。作业数量多、网络带宽充足时使用。
内存受限环境 #
jobscheduler:
sweeper:
page_size: 50 # 减少分页大小
建议: 减少到 50。内存受限时使用。
高性能环境 #
jobscheduler:
sweeper:
page_size: 1000 # 更大分页大小
建议: 增加到 1000+。网络带宽充足、内存充足时使用。
代码示例 #
easysearch.yml 基础配置 #
jobscheduler:
sweeper:
page_size: 100
大规模集群配置 #
jobscheduler:
sweeper:
page_size: 500
period: 10m
request_timeout: 30s
内存受限配置 #
jobscheduler:
sweeper:
page_size: 50
period: 5m
request_timeout: 10s
动态更新配置 #
PUT /_cluster/settings
{
"transient": {
"jobscheduler.sweeper.page_size": 200
}
}
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
jobscheduler.sweeper.page_size | 分页大小 | 100 |
jobscheduler.sweeper.period | 清扫周期 | 5m |
jobscheduler.request_timeout | 请求超时时间 | 10s |
jobscheduler.sweeper.backoff_millis | 退避延迟时间 | 50ms |
性能影响分析 #
| page_size 设置 | 优点 | 缺点 |
|---|---|---|
| 50 | 内存占用小 | 请求次数多 |
| 100(默认) | 平衡内存和性能 | 标准设置 |
| 500 | 请求次数少 | 内存占用大 |
| 1000+ | 请求次数最少 | 内存占用很大 |
扫描时间估算 #
假设有 10000 个作业文档
page_size = 50:
请求次数: 10000 / 50 = 200 次
每次耗时: 10ms (网络) + 5ms (处理)
总耗时: 200 × 15ms = 3 秒
page_size = 100 (默认):
请求次数: 10000 / 100 = 100 次
每次耗时: 12ms + 8ms
总耗时: 100 × 20ms = 2 秒
page_size = 500:
请求次数: 10000 / 500 = 20 次
每次耗时: 30ms + 40ms
总耗时: 20 × 70ms = 1.4 秒
page_size = 1000:
请求次数: 10000 / 1000 = 10 次
每次耗时: 50ms + 100ms
总耗时: 10 × 150ms = 1.5 秒
使用场景 #
推荐使用默认值的场景 #
- 标准环境: 作业数量适中(数千个)
- 平衡需求: 平衡内存使用和性能
- 常规硬件: 标准服务器配置
推荐增加分页大小的场景 #
- 大量作业: 作业数量很多(数万个)
- 高带宽: 网络带宽充足
- 充足内存: 节点内存充足
- 减少请求: 希望减少网络请求次数
推荐减少分页大小的场景 #
- 内存受限: 节点内存紧张
- 小规模作业: 作业数量很少(数百个)
- 低带宽: 网络带宽有限
- 稳定性优先: 优先考虑稳定性
与超时配置的配合 #
page_size 和 request_timeout 的协同
配置 1: 标准配置
page_size: 100
request_timeout: 10s
└── 每页在 10s 内完成
配置 2: 大分页配置
page_size: 500
request_timeout: 30s
└── 增加分页同时增加超时 ✅
配置 3: 小分页配置
page_size: 50
request_timeout: 10s
└── 小分页使用默认超时即可
搜索请求示例 #
清扫器搜索请求结构
SearchRequest {
"indices": [".jobscheduler-*"],
"source": {
"size": page_size, // 使用配置的分页大小
"query": {
"match_all": {}
},
"sort": [
{"job_schedule_time": "asc"}
]
}
}
page_size = 100:
每次搜索返回最多 100 个作业文档
page_size = 500:
每次搜索返回最多 500 个作业文档
动态更新影响 #
配置更新的影响
page_size: 100 → 200
当前正在进行的清扫:
└── 继续使用旧的 page_size (100)
下一次清扫:
└── 使用新的 page_size (200) ✅
已完成的清扫:
└── 不受影响
计划中的清扫:
└── 使用新的 page_size (200)
注意事项 #
默认值: 默认值为
100,适用于大多数场景。内存影响: 分页大小越大,每次搜索占用内存越多。
网络影响: 分页大小越大,单次请求数据量越大。
请求次数: 分页大小越大,总请求次数越少。
动态更新: 支持动态更新,下次清扫时生效。
与超时配合: 增加分页大小应考虑增加超时时间。
作业数量: 应根据作业数量调整分页大小。
监控建议: 监控清扫耗时和内存使用。
测试验证: 配置变更后应验证清扫性能。
旧版废弃:
org.easysearch.jobscheduler.sweeper.page_size已废弃。





