自动调整 Amazon OpenSearch Service - Amazon Opensearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

自动调整 Amazon OpenSearch Service

Amazon OpenSearch 服务中的自动调整使用 OpenSearch 集群中的性能和使用情况指标建议与内存相关的配置更改,包括节点上的队列和缓存大小以及 Java 虚拟机 (JVM) 设置。这些可选更改可提高集群速度和稳定性。

有些更改会立即部署,而其他更改则需要您安排维护时段。您可以随时恢复到默认 OpenSearch 服务设置。

随着自动调整收集和分析域的性能指标,您可以在通知页上面的 OpenSearch Service 控制台中查看其建议。

自动调整可在运行任何 OpenSearch 版本或 Elasticsearch 6.7 或更高版本的域上的商业 Amazon Web Services 区域 中在受支持的实例类型上使用。

更改类型

自动调整有两大类更改:

  • 集群运行时应用的无中断更改

  • 需要蓝/绿部署的更改

根据您域的性能指标,“自动调整”可以建议对以下设置进行调整:

更改类型 类别 描述

JVM 堆大小

蓝/绿

默认情况下,OpenSearch Services 将实例的 RAM 的 50% 用于 JVM 堆,最大堆大小为 32 GiB。

增加此百分比可以给 OpenSearch 更多的内存,但为操作系统和其他进程留下的内存较少。较大的值可以减少垃圾回收暂停的数量,但会增加这些暂停的长度。

JVM 年轻一代设置

蓝/绿

JVM“年轻一代”设置会影响次要垃圾收集的频率。更频繁的次要收集可以减少主要收集和暂停的次数。

队列大小

无中断

默认情况下,搜索队列大小为 1000,写入队列大小为 10000。如果有其他堆可用于处理请求,则自动调整会自动缩放搜索和写入队列。

缓存大小

无中断

字段缓存监控堆上的数据结构,因此监控缓存的使用非常重要。自动调整可调整字段数据高速缓存大小,以避免内存不足和断路器问题。

这些区域有:分片请求缓存在节点级别进行管理,并且默认的最大大小为堆的 1%。自动调整可扩展分片请求高速缓存大小,以接受比配置的集群能够处理的更多搜索和索引请求。

请求大小 无中断

默认情况下,当正在进行的请求的合计大小超过 JVM 总数的 10% 时(对于 t2 实例类型为 2%,对于 t3.small 为 1%),OpenSearch 将会限制所有新的 _search_bulk 请求,直到现有请求完成。

自动调整将会根据系统上当前占用的 JVM 量自动调整此阈值,通常在 5-15% 之间。例如,如果 JVM 内存压力大,则自动调整可能会将阈值降至 5%,此时,您可能会看到更多拒绝,直到集群稳定和阈值提高。

如果在未设置维护时段的情况下启用“自动调整”,则“自动调整”仅应用无中断更改。随着时间的推移,性能优势通常较小,但您可以避免与蓝/绿部署相关的开销。

有关配置维护时段的指导,请参阅 计划更改

启用或禁用自动调整

默认情况下,OpenSearch Service 在新域中启用自动调整。要在现有域上启用或禁用自动调整,我们建议使用控制台,这大大简化了过程。在控制台中,选择您的域,转到 Auto-Tune(自动调整)选项卡,然后选择 Edit(编辑)。启用自动调整不会导致蓝/绿部署。

Amazon CLI

要使用 Amazon CLI,请配置 auto-tune-options 参数。以下示例命令在具有维护计划的现有域上启用自动调整,该计划在每天下午 12:00 UTC 重复:

aws opensearch update-domain-config \ --domain-name mylogs \ --auto-tune-options '{"DesiredState": "ENABLED","MaintenanceSchedules":[{"StartAt":"2021-12-19","Duration":{"Value":2,"Unit":"HOURS"},"CronExpressionForRecurrence": "cron(0 12 * * ? *)"}]}'

配置 API

要使用配置 API,请配置 AutoTuneOptions 设置:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/domain-name/config { "AutoTuneOptions": { "DesiredState": "ENABLED", "MaintenanceSchedules": [{ "StartAt": 4104152288000, "Duration": { "Value": 2, "Unit": "HOURS" }, "CronExpressionForRecurrence": "cron(0 12 * * ? *)" }] } }

CloudFormation

您目前无法使用 Amazon CloudFormation 启用或禁用自动调整。

计划更改

要应用需要蓝色/绿色部署的更改,您需要为您的域安排一个维护窗口,例如,在星期五上午 6:00 到 9:00 之间。我们建议为低流量时间安排维护时段。

  • 要在部署之前查看所有更改,请等待自动调整通知您建议的优化。然后安排一次性维护窗口以部署更改。

  • 要获得更自动化的体验,请设置每周维护时段(例如每周六凌晨 2:00),或使用自定义 cron 表达式 了解更复杂的时间表。

要在控制台中安排更改,请选择您的域,转到自动调整选项卡上,选择编辑,然后选择添加维护时段。此选项卡还显示您当前的维护时段,以及自动调整是否会在下一个窗口中进行任何更改。

Cron 表达式

自动调整的 Cron 表达式将相同的六字段语法用作 Amazon CloudWatch Events

minute hour day-of-month month day-of-week year

例如,以下表达式转换为“从 2021 年到 2024 年的每个星期二和星期五凌晨 1:15”:

15 1 ? * 2,5 2021-2024

下表包括每个字段的有效值。

字段 有效值

分钟

0–59

小时

0–23

日期

1–31

1 月至 12 月或 1 月、2 月、3 月、4 月、5 月、6 月、7 月、8 月、9 月、10 月、11 月、12 月

星期几

1-7 或者星期日、星期一、星期二、星期四、星期五、星期六

年份

1970-2199

月中的某一天和周中的某一天重叠,因此您可以指定一个,但不能同时指定两个。您必须将另一个标记为 ?。有关通配符选项的完整摘要,请参阅 Amazon CloudWatch Events 用户指南