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

标签 java elasticsearch

我们有几个 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/

相关文章:

elasticsearch - 如何在给定查询中搜索索引短语

java.security.AccessControlException : access denied ("java.net.SocketPermission" "smtp.gmail.com" "resolve")

java - 私有(private)方法or内部类,该用哪个

java - 创建具有通用类型的 map

java - Android:存储和读取变量值的不同方式?

elasticsearch - 使用NEST设置Elasticsearch routing_partition_size

deployment - 将 elasticsearch 服务直接暴露给客户端或将其放在中间件后面

c# - 从Elastic脚本参数循环遍历数组

c# - Elasticsearch Analyzer忽略连字符

java - 如何在selenium webdriver中定位动态变化的图像?