Link Search Menu Expand Document Documentation Menu

远程分段背压

2.10 版引入

远程段反压是一种分片级别的拒绝机制,当远程段存储落后于主分片上本地提交的段时,它会动态拒绝索引请求。通过远程段反压,可以防止远程存储和本地主存储之间的延迟。这种延迟可能由远程存储交互缓慢或失败、远程存储节流、长时间的垃圾回收暂停或高 CPU 利用率引起。

阈值

如果以下任何阈值被突破,则激活远程段反压:

  • 连续失败:如果存在 N 次或更多次连续失败,则激活反压。N 的值可在 remote_store.segment.pressure.consecutive_failures.limit 中配置。
  • 字节延迟:字节延迟是通过将存在于本地已提交段中但不在远程存储中的所有文件的大小相加来计算的。如果字节延迟大于每次刷新后上传的文件大小(以字节为单位)的移动平均值的 K 倍,则激活反压。方差因子 K 可在 remote_store.segment.pressure.bytes_lag.variance_factor 中配置。移动窗口大小可通过 remote_store.moving_average_window_size 设置进行配置。
  • 时间延迟:时间延迟是通过比较最近一次本地刷新和最近一次远程存储段上传的时间戳来计算的。如果时间延迟大于每次刷新后上传新段和元数据文件所用时间的移动平均值的 K 倍,则激活反压。方差因子 K 可通过 remote_store.segment.pressure.time_lag.variance_factor 设置进行配置。移动窗口大小可通过 remote_store.moving_average_window_size 设置进行配置。

处理段合并

每次段合并时,都会启动相应的刷新。由于此刷新包含新的合并段,字节延迟会立即飙升。为了补偿这种飙升,只有当远程存储落后于本地主存储一个以上的刷新时,才会评估字节延迟和时间延迟。然而,由连续失败引起的反压无论刷新延迟(远程存储落后于本地存储的刷新次数)如何都会激活。

远程段反压设置

远程段反压为标准 OpenSearch 集群设置添加了多个设置。这些设置是动态的,因此您无需重启集群即可更改默认的反压行为。

下表列出了用于激活反压的设置。有关阈值计算,请参阅阈值

设置 数据类型 描述
remote_store.segment.pressure.enabled 布尔型 启用远程段反压。默认为 true
remote_store.segment.pressure.consecutive_failures.limit 整数 激活远程段反压所需的最小连续失败次数。默认为 5
remote_store.segment.pressure.bytes_lag.variance_factor 浮点型 与移动平均值一起用于计算激活远程段反压的动态字节延迟阈值的方差因子。默认为 10
remote_store.segment.pressure.time_lag.variance_factor 浮点型 与移动平均值一起用于计算激活远程段反压的动态时间延迟阈值的方差因子。默认为 10

下表列出了用于统计的设置。

设置 数据类型 描述
remote_store.moving_average_window_size 整数 用于计算通过 远程存储统计 API 公开的滚动统计值的移动平均窗口大小。默认为 20。强制最小值为 5
剩余 350 字符

有问题?

想要贡献?