elasticsearch - JVM缓冲池只会增长

标签 elasticsearch jvm

我在生产中使用ElasticSearch,并使用Prometheus抓取指标。查看这些图,我可以看到jvm_buffer_pool指标不断增长,直到最终崩溃

据我了解,缓冲池在GC之外,但是如何清理呢?

最佳答案

JVM的Direct ByteBuffers位于堆对象上,用于代理堆外内存。即使堆外内存为1 GB,ByteBuffer也为数十个字节。当GC由于不再引用该代理对象而对其进行清理时,也会释放堆外内存。

如果没有释放堆外内存,那是因为;

  • 保留在堆上。即需要内存。
  • ElasticSearch正在直接分配堆外内存,并且库有泄漏(不太可能)

  • 我会尝试允许更多的直接内存以查看是否有帮助。 -XX:MaxDirectMemorySize=64g或您可以保留的任何内容。

    关于elasticsearch - JVM缓冲池只会增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607091/

    相关文章:

    php - 用Symfony 2用Elasticsearch填充索引

    Java char 数组似乎每个 char 需要超过 2 个字节

    Java char数组到String而不创建新对象

    java - 强制小程序加载到同一个 JVM 实例中?

    java - ifeq/ifne JVM 操作码总是分支

    elasticsearch - Elastic Search 6.0 from/size不起作用,获取重复

    elasticsearch - Elasticsearch,logstash和Kibana是否可以免费创建自己销售的产品?

    Elasticsearch 前缀查询不适用于嵌套文档

    elasticsearch - 根据条件添加字段和值

    apache - Tomcat 7 获取 CreateJavaVM 失败错误