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

配置项作用 #

cache.recycler.page.type 配置项控制缓存回收器(Cache Recycler)的页面回收策略类型。缓存回收器负责管理内存页面的分配和回收,此配置决定了回收器的并发行为和性能特征。

配置项类型 #

该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。

默认值 #

CONCURRENT

是否必需 #

可选配置项(有默认值)

取值范围 #

CONCURRENT - 并发回收模式
IDENTITY   - 身份模式(不使用回收器)

配置格式 #

# 默认配置(并发回收)
cache.recycler.page.type: CONCURRENT

# 身份模式
cache.recycler.page.type: IDENTITY

相关配置项 #

配置项默认值说明
cache.recycler.page.typeCONCURRENT页面回收类型
cache.recycler.page.limit.heap10%堆内存限制

工作原理 #

缓存回收器类型机制:

┌─────────────────────────────────────────────────────────────────┐
│                    缓存回收器类型对比                              │
└─────────────────────────────────────────────────────────────────┘

CONCURRENT 模式:
    │
    ├── 多线程并发回收
    │   ├── 允许同时分配和回收
    │   ├── 使用并发数据结构
    │   └── 更好的并发性能
    │
    └── 适合高并发场景

IDENTITY 模式:
    │
    ├── 简单包装器
    │   ├── 不使用回收机制
    │   ├── 直接分配/释放
    │   └── 更低的并发开销
    │
    └── 适合低并发或调试场景

两种类型对比 #

CONCURRENT vs IDENTITY:

CONCURRENT:
    优点:
        ✓ 支持并发访问
        ✓ 自动回收内存
        ✓ 内存利用率高
        ✓ 适合生产环境

    缺点:
        ✗ 更多的并发控制开销
        ✗ 更复杂的实现
        ✗ 可能出现竞争

IDENTITY:
    优点:
        ✓ 简单直接
        ✓ 较少的并发开销
        ✓ 调试友好
        ✓ 可预测的行为

    缺点:
        ✗ 不支持自动回收
        ✗ 可能导致内存碎片
        ✗ 不适合高并发场景
        ✗ 生产环境不推荐

使用场景 #

1. 默认配置(推荐) #

cache.recycler.page.type: CONCURRENT

适用场景:

  • 所有生产环境
  • 高并发访问
  • 需要自动内存管理

2. 调试模式 #

cache.recycler.page.type: IDENTITY

适用场景:

  • 性能调试
  • 内存问题诊断
  • 开发测试环境
  • 禁用回收器

推荐设置建议 #

环境推荐类型说明
生产环境CONCURRENT并发性能优先
开发测试CONCURRENT保持一致性
性能调试IDENTITY简化问题定位
低并发CONCURRENT仍推荐使用

内存管理影响 #

对内存管理的影响:

CONCURRENT 模式:
    - 自动回收内存页面
    - 重用已释放的页面
    - 减少内存分配次数
    - 提高内存利用率

IDENTITY 模式:
    - 不回收内存页面
    - 每次分配新页面
    - 依赖 GC 回收内存
    - 可能增加 GC 压力

配置示例 #

# 场景 1: 标准生产集群
cluster.name: prod-cluster
cache.recycler.page.type: CONCURRENT

# 场景 2: 性能调试集群
cluster.name: debug-cluster
cache.recycler.page.type: IDENTITY

# 场景 3: 高性能集群
cluster.name: perf-cluster
cache.recycler.page.type: CONCURRENT

监控建议 #

# 查看当前配置
GET /_nodes/settings?filter_path=*.cache.recycler.page.type

# 查看内存使用
GET /_nodes/stats/jvm?filter_path=**.heap

# 查看 GC 统计
GET /_nodes/stats/jvm?filter_path=**.gc

# 查看缓存统计
GET /_nodes/stats/indices?filter_path=**.cache

性能影响分析 #

不同类型对性能的影响:

CONCURRENT:
    并发性能:
        - 高并发下性能更好
        - 减少锁竞争
        - 支持多线程分配

    内存性能:
        - 页面重用
        - 减少分配开销
        - 降低 GC 压力

IDENTITY:
    并发性能:
        - 低并发下性能相近
        - 减少并发控制开销
        - 高并发下可能成为瓶颈

    内存性能:
        - 无页面重用
        - 增加分配开销
        - 增加 GC 压力

故障排查 #

内存相关问题排查:

问题 1: 内存使用持续增长

排查:
    1. 检查回收器类型
       GET /_nodes/settings?filter_path=*.cache.recycler.page.type

    2. 检查内存使用
       GET /_nodes/stats/jvm?filter_path=**.heap

    3. 检查 GC 情况
       GET /_nodes/stats/jvm?filter_path=**.gc

解决:
        - 确保使用 CONCURRENT
        - 检查 heap 限制配置
        - 分析内存泄漏问题

问题 2: 并发性能差

排查:
    1. 检查回收器类型
    2. 分析线程争用
    3. 检查缓存使用模式

解决:
        - 确保使用 CONCURRENT
        - 优化缓存访问模式

注意事项 #

  1. 静态配置:修改需要重启节点
  2. 默认推荐:生产环境应使用 CONCURRENT
  3. 性能影响:直接影响内存管理性能
  4. 调试使用:IDENTITY 主要用于调试场景
  5. 并发考虑:高并发环境必须使用 CONCURRENT
  6. 内存泄漏:IDENTITY 模式可能暴露内存问题