--- title: "分片不活跃时间配置" date: 2026-01-07 lastmod: 2026-01-07 description: "控制分片不活跃判定时间的配置项说明" tags: ["索引配置", "内存管理", "性能优化"] summary: "配置项作用 # indices.memory.shard_inactive_time 配置项控制判定分片不活跃的时间阈值。当分片在指定时间内没有索引操作时,系统将其标记为不活跃,并可以释放其索引缓冲区内存,用于其他活跃分片。 配置项类型 # 该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。 默认值 # 5m 是否必需 # 可选配置项(有默认值) 取值范围 # 0 ~ 正无穷 配置格式 # # 默认配置 indices.memory.shard_inactive_time: 5m # 快速内存回收 indices.memory.shard_inactive_time: 1m # 慢速内存回收 indices.memory.shard_inactive_time: 10m # 频繁写入场景 indices.memory.shard_inactive_time: 30m 相关配置项 # 配置项 默认值 说明 indices.memory.interval 5s 内存检查间隔 indices.memory.shard_inactive_time 5m 分片不活跃时间 工作原理 # 分片不活跃判定机制:" --- ## 配置项作用 `indices.memory.shard_inactive_time` 配置项控制判定分片不活跃的时间阈值。当分片在指定时间内没有索引操作时,系统将其标记为不活跃,并可以释放其索引缓冲区内存,用于其他活跃分片。 ## 配置项类型 该配置项为**静态配置**,需要在启动时设置,修改后需要重启节点才能生效。 ## 默认值 ``` 5m ``` ## 是否必需 **可选配置项**(有默认值) ## 取值范围 ``` 0 ~ 正无穷 ``` ## 配置格式 ```yaml # 默认配置 indices.memory.shard_inactive_time: 5m # 快速内存回收 indices.memory.shard_inactive_time: 1m # 慢速内存回收 indices.memory.shard_inactive_time: 10m # 频繁写入场景 indices.memory.shard_inactive_time: 30m ``` ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `indices.memory.interval` | 5s | 内存检查间隔 | | `indices.memory.shard_inactive_time` | 5m | 分片不活跃时间 | ## 工作原理 分片不活跃判定机制: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 分片不活跃检测 │ └─────────────────────────────────────────────────────────────────┘ 分片索引操作活跃 │ ▼ 最后索引操作完成 │ ▼ 开始计时 │ ├── 新索引操作到达 │ │ │ └── 重置计时 │ └── 经过 shard_inactive_time 无操作 │ ▼ 标记为不活跃 │ ├── 写入缓冲区到磁盘 ├── 释放索引缓冲区 └── 内存可供其他分片使用 ``` ## 使用场景 ### 1. 默认配置(推荐) ```yaml indices.memory.shard_inactive_time: 5m ``` 适用于大多数集群配置。 ### 2. 频繁索引变更 ```yaml indices.memory.shard_inactive_time: 1m indices.memory.interval: 1s ``` **适用场景:** - 频繁创建/删除索引 - 大量临时索引 - 需要快速释放内存 ### 3. 批量写入场景 ```yaml indices.memory.shard_inactive_time: 30m ``` **适用场景:** - 定时批量写入 - 写入间隔较长 - 避免频繁释放内存 ### 4. 日志索引场景 ```yaml indices.memory.shard_inactive_time: 10m indices.memory.interval: 5s ``` **适用场景:** - 按时间滚动日志索引 - 旧索引不再写入 - 自动回收内存 ## 推荐设置建议 | 索引模式 | 推荐时间 | interval | 说明 | |---------|---------|----------|------| | 持续写入 | 10-30m | 5-10s | 避免过早回收 | | 偶尔写入 | 5m | 5s | 默认配置 | | 频繁变更 | 1-3m | 1-2s | 快速回收 | | 日志索引 | 5-10m | 5s | 滚动后回收 | | 临时索引 | 1m | 1s | 快速释放 | ## 与 interval 的配合 ``` 内存回收机制: interval: 检查频率 shard_inactive_time: 判定不活跃的时间 回收延迟 ≈ interval + shard_inactive_time 示例配置: interval: 5s shard_inactive_time: 30s 时间线: 0s: 最后写入操作 5s: 第1次检查 - 活跃 10s: 第2次检查 - 活跃 ... 30s: 第6次检查 - 仍活跃 35s: 第7次检查 - 不活跃,释放内存 实际延迟: 30-35秒 ``` ## 监控建议 ```bash # 查看索引内存使用 GET /_cat/indices?v&h=index,indexing.memory* # 查看分片状态 GET /_cat/shards?v&h=index,shard,prirep,state,docs # 查看节点统计 GET /_nodes/stats/indices?filter_path=**.indexing ``` ## 注意事项 1. **静态配置**:修改需要重启节点 2. **与 interval 配合**:shard_inactive_time 应远大于 interval 3. **过早回收风险**:值太小可能导致活跃分片内存被回收 4. **延迟回收风险**:值太大会延迟内存释放 5. **写入模式影响**:根据索引写入模式调整 6. **批量写入考虑**:批量间隔应小于 shard_inactive_time