gpt4 book ai didi

java - ElasticSearch 是如何计算内存压力的?

转载 作者:行者123 更新时间:2023-12-05 02:44:27 25 4
gpt4 key购买 nike

我们有几个 Java 服务,我们想向其添加监控/警报。

我们正在从 JVM 收集内存使用信息。然后,我们注意到 ElasticSearch 有一个称为内存压力的指标,这听起来对我们的 Java 服务也是一个有用的指标。​​

问题是我不知道它是如何工作的。我试过在其 GitHub 的代码中搜索“内存压力” , 无济于事。

当我尝试搜索公式或对其计算方式的解释时,我总是以某种方式最终找到相同的两篇文章:Understanding the Memory Pressure IndicatorJVM memory pressure indicator .

这些很好地解释了如何解释 ElasticSearch 计算的值,但没有解释如何计算它。

有谁知道 ElasticSearch 内存压力计算的幕后工作原理?

最佳答案

如您引用的第三个链接所述:

the JVM memory pressure indicator is actually the fill rate of the old generation pool

所以它只是旧池使用率的百分比

检索 GET _nodes/stats 时,您将获得有关 JVM 指标的以下信息:

  ...
"jvm" : {
"timestamp" : 1614957874986,
"uptime_in_millis" : 274397434,
"mem" : {
"heap_used_in_bytes" : 20094897664,
"heap_used_percent" : 65,
"heap_committed_in_bytes" : 30836523008,
"heap_max_in_bytes" : 30836523008,
"non_heap_used_in_bytes" : 310525488,
"non_heap_committed_in_bytes" : 321077248,
"pools" : {
"young" : {
"used_in_bytes" : 6710886400,
"max_in_bytes" : 0,
"peak_used_in_bytes" : 12264144896,
"peak_max_in_bytes" : 0
},
"old" : {
"used_in_bytes" : 13098798592,
"max_in_bytes" : 30836523008,
"peak_used_in_bytes" : 14881037312,
"peak_max_in_bytes" : 30836523008
},
"survivor" : {
"used_in_bytes" : 285212672,
"max_in_bytes" : 0,
"peak_used_in_bytes" : 1300234240,
"peak_max_in_bytes" : 0
}
}
},

所以内存压力可以简单地用下面的公式计算:

100 * jvm.mem.pools.old.used_in_bytes / jvm.mem.pools.old.max_in_bytes 

在我的例子中产生了 42%,可以在下面的截图中看到

enter image description here

关于java - ElasticSearch 是如何计算内存压力的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66495021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com