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

配置项作用 #

transform.circuit_breaker.jvm.threshold 配置项用于控制Transform 断路器的 JVM 内存使用阈值

当 JVM 堆内存使用率超过此值时,Transform 任务将被阻止执行。

配置项属性 #

  • 配置路径: transform.circuit_breaker.jvm.threshold
  • 数据类型: Integer(整数,百分比)
  • 默认值: 85
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(可以动态更新,无需重启)

配置项详解 #

工作机制 #

内存阈值控制

默认阈值: 85%


内存使用率 < 85%:
├── Transform 正常执行 ✅
├── 不受限制
└-- 全速处理


内存使用率 >= 85%:
├── Transform 被阻止 ⚠️
├── 暂停新任务
├── 等待内存释放
├── 定期检查恢复
└── 内存下降后恢复


恢复条件:
内存使用率 < threshold
    │
    ├── 允许新任务
    ├── 逐渐恢复
    └── 继续执行

阈值选择 #

不同阈值的影响

threshold = 75 (保守):
├── 保护: 严格 ✅
├── OOM 风险: 很低 ✅
├── Transform 吞吐: 较低 ⚠️
└-- 适用: 内存受限环境


threshold = 85 (默认):
├── 保护: 良好 ✅
├── OOM 风险: 低 ✅
├── Transform 吞吐: 平衡 ✅
└-- 适用: 大多数场景 ✅


threshold = 90 (激进):
├── 保护: 基础
├── OOM 风险: 中等 ⚠️
├-- Transform 吞吐: 较高
└── 适用: 内存充足环境


threshold = 95+ (危险):
├── 保护: 弱 ⚠️
├── OOM 风险: 高 ❌
├-- Transform 吞吐: 高
└-- 不推荐 ❌

JVM 内存计算 #

JVM 堆内存使用率

计算方式:
内存使用率 = (已用内存 / 堆内存总量) × 100


示例:
堆内存总量: 8GB
已用内存: 6GB
使用率: 6/8 × 100 = 75%

已用内存: 7GB
使用率: 7/8 × 100 = 87.5%
└── 超过 85% → 阻止 Transform


相关 JVM 指标:
├── Heap Memory Usage
├── Old Gen Usage
├── GC Frequency
└── GC Time

配置建议 #

默认配置(推荐) #

transform:
  circuit_breaker:
    jvm:
      threshold: 85  # 默认值

建议: 大多数场景使用默认值。

保守配置 #

transform:
  circuit_breaker:
    jvm:
      threshold: 75  # 更保守

建议: 内存受限或高负载环境使用。

大内存环境 #

transform:
  circuit_breaker:
    jvm:
      threshold: 90  # 更激进

建议: 大内存、低负载环境使用。

动态更新 #

PUT /_cluster/settings
{
  "transient": {
    "transform.circuit_breaker.jvm.threshold": 80
  }
}

相关配置 #

配置项作用默认值
circuit_breaker.jvm.threshold内存阈值85
circuit_breaker.enabled断路器开关true

注意事项 #

  1. 默认值: 默认值为 85,平衡保护和吞吐量。

  2. 动态更新: 支持动态更新。

  3. 百分比单位: 值为百分比(0-100)。

  4. 与 enabled 配合: 必须启用断路器才生效。

  5. 监控建议: 监控 JVM 内存使用率和 GC 情况。

  6. 合理设置: 根据实际内存大小和负载调整。