更新时间:2023-06-20 GMT+08:00

CPU流控

背景信息

CPU流控可以基于当前节点的CPU占用率实现流量控制。

CPU流控通过配置节点的最大CPU占用率来避免流量冲击下节点掉线风险,可以基于流量阈值预估CPU占用率最大值。当节点CPU超过配置阈值后,CPU流控会丢弃节点请求,达到保护集群的目的,节点内流量和elasticsearch monitor类接口不会被流控。

在开启或关闭CPU流控时,执行命令涉及的配置参数如下:

表1 CPU流控的配置参数说明

配置名

类型

说明

flowcontrol.cpu.enabled

Boolean

CPU流控开关,开启会影响节点访问性能。

取值范围:true、false

默认值:false

flowcontrol.cpu.percent_limit

Integer

节点最大CPU占用率配置。

取值范围:0~100

默认值:90

flowcontrol.cpu.allow_path

List

CPU流控白名单,CPU流控基于请求path做流控,配置allow_path白名单,请求将不参与CPU流控。

默认值为空。

单path最大支持32个字符,最多支持配置10个请求路径,支持通配符配置。例如,配置“auto_*/_search”将不限制所有的auto_前缀索引的search请求。

flowcontrol.cpu.*.filter_path

String

配置需要进行CPU流控的访问Path,控制单个请求Path的CPU使用阈值。

最大长度32。

例如:

"flowcontrol.cpu.search.filter_path": "/index/_search",

"flowcontrol.cpu.search.limit": 60,

默认值 "**", 表示匹配所有的路径。如果只配置了单路径limit,没有配置filter_path,表示除去白名单外的所有path都影响。白名单规则优先于单路径规则,如果一个路径同时配置了allow_path和filter_path, 此请求路径会被允许。

例如同时配置了filter_path和allow_path,其中filter_path="abc/_search", allow_path="abc/_search",此种情况abc/_search将不被流控。

flowcontrol.cpu.*.limit

Integer

配置请求Path的CPU阈值,CPU超过阈值触发流控。

取值范围:0~100

默认值:90

操作步骤

  1. 登录云搜索服务管理控制台。
  2. “集群管理”页面选择目标集群,单击操作列“Kibana”,登录Kibana界面。
  3. 单击左侧导航栏的“Dev Tools”,执行命令开启或关闭CPU流控。
    • 开启CPU流控
      PUT /_cluster/settings
      {
        "persistent": {
          "flowcontrol.cpu.enabled": true,
          "flowcontrol.cpu.percent_limit": 80,
          "flowcontrol.cpu.allow_path": ["index/_search"]
        }
      }
    • 关闭CPU流控
      PUT /_cluster/settings
      {
        "persistent": {
          "flowcontrol.cpu.enabled": false
        }
      }