分段复制背压
段复制反压是一种分片级别的拒绝机制,当集群中的副本分片落后于主分片时,它会动态拒绝索引请求。通过段复制反压,当复制组中过期分片的百分比超过 segrep.pressure.replica.stale.limit
(默认为 50%)时,索引请求将被拒绝。如果副本分片落后主分片的检查点数量超过 segrep.pressure.checkpoint.limit
设置,并且其当前复制延迟大于定义的 segrep.pressure.time.limit
字段,则该副本被视为过期。
副本分片也会被监控,以确定这些分片是否长时间停滞或落后。当副本分片停滞或落后时间超过 segrep.pressure.time.limit
字段定义时间的两倍时,这些分片将被移除并替换为新的副本分片。
请求正文字段
段复制反压默认禁用。要启用它,请将 segrep.pressure.enabled
设置为 true
。您可以使用 集群设置 API 端点更新以下动态集群设置。
字段 | 数据类型 | 描述 |
---|---|---|
segrep.pressure.enabled | 布尔型 | 启用段复制反压机制。默认为 false 。 |
segrep.pressure.time.limit | 时间单位 | 副本分片从主分片复制所需的最大时间。一旦 segrep.pressure.time.limit 和 segrep.pressure.checkpoint.limit 同时超出,段复制反压机制就会启动。默认为 5 分钟 。 |
segrep.pressure.checkpoint.limit | 整数 | 副本分片在从主分片复制时可以落后的最大索引检查点数量。一旦 segrep.pressure.checkpoint.limit 和 segrep.pressure.time.limit 同时超出,段复制反压机制就会启动。默认为 4 个检查点。 |
segrep.pressure.replica.stale.limit | 浮点 | 复制组中允许存在的过期副本分片的最大数量。一旦 segrep.pressure.replica.stale.limit 超出,段复制反压机制就会启动。默认为 .5 ,即复制组的 50%。 |
端点
您可以使用段复制 API 端点检索段复制反压指标,如下所示
GET _cat/segment_replication
示例响应
shardId target_node target_host checkpoints_behind bytes_behind current_lag last_completed_lag rejected_requests
[index-1][0] runTask-1 127.0.0.1 0 0b 0s 7ms 0
在启动段复制反压时,会考虑 checkpoints_behind
和 current_lag
指标。它们分别对照 segrep.pressure.checkpoint.limit
和 segrep.pressure.time.limit
进行检查。