如何解决 OpenSearch Service 集群上的高 JVM 内存压力问题?

1 分钟阅读
0

我的 Amazon OpenSearch Service 集群具有高 JVM 内存压力,我不知道如何解决这个问题。

简短描述

默认情况下,OpenSearch Service 使用实例 RAM 的 50% 来处理大小不超过 32 GiB 的 JVM 堆。JVM 内存压力指定了集群节点中 Java 堆的百分比。以下指南说明了 JVM 内存压力百分比的含义:

  • 如果 JVM 内存压力达到 75%,则 OpenSearch Service 会为 x86 Amazon Elastic Compute Cloud(Amazon EC2)实例类型启动并发标记清除(CMS)垃圾收集器。基于 ARM 的 Graviton Amazon EC2 实例类型使用垃圾优先(G1)垃圾收集器,该垃圾收集器使用额外的短暂停和堆碎片整理。垃圾回收是一个 CPU 密集型流程。如果内存使用量持续增长,那么您可能会遇到 ClusterBlockExceptionJVM OutOfMemoryError 或其他集群性能问题。有关详细信息,请参阅从连续繁重处理负载恢复
  • 如果 JVM 内存压力超过 92% 长达 30 分钟,则 OpenSearch Service 会阻止所有写入操作。
  • 如果 JVM 内存压力达到 100%,则系统会将 OpenSearch Service JVM 配置为退出,并最终在 OutOfMemory(OOM)时重启。

以下原因可能会导致高 JVM 内存压力:

  • 对集群的请求数量激增。
  • 聚合、通配符和在查询中选择较宽的时间范围。
  • 节点间的分片分配不均衡或者集群中的分片过多。
  • 字段数据或索引映射爆炸式增长。
  • 实例类型无法处理传入负载。

解决方法

减少集群流量以解决高 JVM 内存压力问题。要减少集群流量,请遵循以下最佳实践:

有关如何对高 JVM 内存压力进行故障排除的详细信息,请参阅为什么我的 OpenSearch Service 节点崩溃了?

相关信息

Amazon OpenSearch Service 故障排除

如何纵向扩展或横向扩展 Amazon OpenSearch Service 域?

开始使用 Amazon Elasticsearch Service: 我需要多少分片?

AWS 官方
AWS 官方已更新 1 年前