了解为什么 AWS Elasticsearch GC(新旧)不断上升,而内存压力却不上升

问题描述 投票:0回答:3

我试图了解我的 AWS Elasticsearch 垃圾收集时间是否有问题,但我发现的所有与内存相关的问题都与内存压力有关,这似乎还不错。

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

但是在查看内存压力时,我发现我没有通过 75% 标记(但接近......),根据文档,这将触发并发标记和扫描。

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

amazon-web-services elasticsearch jvm
3个回答
3
投票

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


1
投票

顶部图表报告聚合 GC 收集时间,可从 GarbageCollectorMXBean 获得。它不断增加,因为每个年轻一代的收藏都会增加它。在底部图表中,您可以看到许多年轻一代的收藏正在发生。

任何网络应用程序都需要年轻代集合(这就是 OpenSearch 集群):您不断发出请求(查询或更新),而这些请求会产生垃圾。

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

如果您确实遇到内存压力,唯一真正的解决方案是迁移到更大的节点大小。由于索引在节点之间分片的方式,添加节点可能不会有帮助。


0
投票

AWS 控制台和自动 CloudWatch 仪表板中针对新旧垃圾收集 (GC) 事件和时间的 Elastic Search/索引性能提供的 OpenSearch 指标是累积的。

这对于性能监控完全没有用,但可以通过将计算的指标添加到指标报告中来解决。

对于计数:

  1. 添加您想要测量的指标
  2. 使用“添加数学”选项创建新的计算指标
  3. 将计算的指标详细信息设置为“DIFF(m1)”,其中 m1 是值的 ID。

Example EVENT COUNTS (JVM GC Young) per time period.

执行时间:

  1. 添加累积 COUNT 和 TIME 度量
  2. 使用“添加数学”选项创建新的计算指标
  3. 将计算的指标详细信息设置为“DIFF(m1) / DIFF(m2)”,其中 m1 是 COUNT 指标 ID,m2 是 TIME 指标 ID。

这将给出“每个垃圾收集事件的时间”

您可以隐藏 COUNT 和 TIME 指标;适当设置比例并添加水平注释/阈值以方便性能监控。

Example Time of JVM GC Collection Events in ms with threshold

© www.soinside.com 2019 - 2024. All rights reserved.