配置项作用 #
cache.recycler.page.type 配置项控制缓存回收器(Cache Recycler)的页面回收策略类型。缓存回收器负责管理内存页面的分配和回收,此配置决定了回收器的并发行为和性能特征。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
CONCURRENT
是否必需 #
可选配置项(有默认值)
取值范围 #
CONCURRENT - 并发回收模式
IDENTITY - 身份模式(不使用回收器)
配置格式 #
# 默认配置(并发回收)
cache.recycler.page.type: CONCURRENT
# 身份模式
cache.recycler.page.type: IDENTITY
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
cache.recycler.page.type | CONCURRENT | 页面回收类型 |
cache.recycler.page.limit.heap | 10% | 堆内存限制 |
工作原理 #
缓存回收器类型机制:
┌─────────────────────────────────────────────────────────────────┐
│ 缓存回收器类型对比 │
└─────────────────────────────────────────────────────────────────┘
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
- 优化缓存访问模式
注意事项 #
- 静态配置:修改需要重启节点
- 默认推荐:生产环境应使用 CONCURRENT
- 性能影响:直接影响内存管理性能
- 调试使用:IDENTITY 主要用于调试场景
- 并发考虑:高并发环境必须使用 CONCURRENT
- 内存泄漏:IDENTITY 模式可能暴露内存问题





