1

我有一个 60GB 堆大小的 2 节点 ES 集群(弹性云)。以下是我的索引和分配的分片数量。

green open prod-master-account       6 0  6871735    99067   4.9gb  4.9gb 
green open prod-master-categories    1 1      221        6   3.5mb   1.7mb 
green open prod-v1-apac              4 1 10123830  1405510  11.4gb   5.6gb 
green open prod-v1-emea              9 1 28608447  2405254  30.6gb    15gb 
green open prod-v1-global           10 1 94955647 12548946 128.1gb  61.2gb 
green open prod-v1-latam             2 1  4398361   471038   4.7gb   2.3gb 
green open prod-v1-noram             9 1 51933712  6188480  60.1gb  29.2gb

JVM 内存在 60% 以上。我想将此集群降级为较小的堆大小。但它每次都失败并由于 JVM 内存高而导致断路器。

我想知道为什么JVM内存仍然很高?如何保持 JVM 内存低?我在分片方面做错了吗?

正如指南所说,每 GB 保留 20 个分片,查看我的配置,它在这些值下。如何将此集群降级为较小的堆大小集群?

非常感激!

4

1 回答 1

0

完全不建议 ES 进程或任何其他 JVM 进程使用 60 GB 的 HEAP 大小,因为超过 32 GB,JVM 不使用压缩对象指针(压缩 oops),因此您不会获得最佳性能。

有关更多信息,请参阅ES 官方文档关于堆设置

您可以尝试在下面优化 ES 堆大小

  1. 如果您有大型 RAM 机器,请尝试使用中型机器,将 50% 的 RAM 分配给 ES 堆大小(不应超过 32 GB 堆大小阈值)。
  2. 分配更少的主分片并增加副本分片以获得更好的搜索性能。
于 2020-11-13T05:29:59.387 回答