理解为什么 AWS Elasticsearch GC(年轻的和老的)不断上升而内存压力却没有

Understanding why AWS Elasticsearch GC (young and old) keeps on rising while memory pressure is not

我想知道我的 AWS Elasticsearch 垃圾收集时间是否有问题,但我发现所有与内存相关的问题都与内存压力有关,这似乎还可以。

因此,当我 运行 对环境进行负载测试时,我观察到所有 GC 收集时间指标不断上升,例如:

但是在查看内存压力时,我发现我没有超过 75% 标记(但接近..),according to documentation,这将触发并发标记和扫描。

所以我担心一旦我添加更多负载或 运行 更长时间的测试,我可能会开始看到真正的问题,这些问题会对我的环境产生影响。那么,我这里有问题吗?当我无法进行内存转储并查看发生了什么时,我应该如何处理不断上升的 GC 时间?

顶部图表报告聚合 GC collection 时间,这是 GarbageCollectorMXBean 中可用的时间。它继续增加,因为每个年轻一代 collection 都会增加它。在底部图表中,您可以看到很多年轻一代 collection 正在发生。

年轻一代 collection 预计在任何 web-app 中(这就是 OpenSearch 集群):您不断发出请求(查询或更新),而这些请求会产生垃圾.

我建议查看主要的 collection 统计数据。根据我使用 OpenSearch 的经验,当您执行大量更新时会发生这些情况,这可能是合并索引的结果。但是,除非您不断更新集群,否则它们应该很少出现。

如果您确实遇到内存压力,唯一真正的解决方案是移动到更大的节点大小。由于索引跨节点分片的方式,添加节点可能无济于事。

我向 AWS 技术支持发送了一个查询,与任何直观行为相反,Elasticsearch 中的新旧收集时间和计数值是累积的。这意味着这个值不断增加并且不会下降到 0 值,直到出现节点删除或节点重启