📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

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.interval5s内存检查间隔
indices.memory.shard_inactive_time5m分片不活跃时间

工作原理 #

分片不活跃判定机制:

┌─────────────────────────────────────────────────────────────────┐
│                    分片不活跃检测                                │
└─────────────────────────────────────────────────────────────────┘

分片索引操作活跃
    │
    ▼
最后索引操作完成
    │
    ▼
开始计时
    │
    ├── 新索引操作到达
    │   │
    │   └── 重置计时
    │
    └── 经过 shard_inactive_time 无操作
         │
         ▼
    标记为不活跃
         │
         ├── 写入缓冲区到磁盘
         ├── 释放索引缓冲区
         └── 内存可供其他分片使用

使用场景 #

1. 默认配置(推荐) #

indices.memory.shard_inactive_time: 5m

适用于大多数集群配置。

2. 频繁索引变更 #

indices.memory.shard_inactive_time: 1m
indices.memory.interval: 1s

适用场景:

  • 频繁创建/删除索引
  • 大量临时索引
  • 需要快速释放内存

3. 批量写入场景 #

indices.memory.shard_inactive_time: 30m

适用场景:

  • 定时批量写入
  • 写入间隔较长
  • 避免频繁释放内存

4. 日志索引场景 #

indices.memory.shard_inactive_time: 10m
indices.memory.interval: 5s

适用场景:

  • 按时间滚动日志索引
  • 旧索引不再写入
  • 自动回收内存

推荐设置建议 #

索引模式推荐时间interval说明
持续写入10-30m5-10s避免过早回收
偶尔写入5m5s默认配置
频繁变更1-3m1-2s快速回收
日志索引5-10m5s滚动后回收
临时索引1m1s快速释放

与 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秒

监控建议 #

# 查看索引内存使用
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