【问题标题】:Elasticsearch unavailable when emptying garbage collector?清空垃圾收集器时 Elasticsearch 不可用?
【发布时间】:2015-07-01 13:21:53
【问题描述】:

我有一个由两个节点组成的 Elasticsearch 集群。一个(实时)网站直接使用这个集群,在我的 ES 集群上持续运行搜索和索引查询。

我的问题是,在定期(且不可预测)的基础上,当其中一个节点清空垃圾收集器时,整个集群变得不可用。我从节点日志中得到的消息看起来像

[2015-07-01 06:43:19,525][INFO ][monitor.jvm] [my_node] [gc][old][205450][116]
duration [5.7s], collections [1]/[6.3s], total [5.7s]/[1m],
memory [22.3gb]->[4.9gb]/[30.9gb],
all_pools {[young] [392.9mb]->[17.2mb]/[665.6mb]}
{[survivor] [29.1mb]->[0b]/[83.1mb]}
{[old] [21.9gb]->[4.9gb]/[30.1gb]}

据我了解(我不是 java 人),这行表明 ES 正在清空其垃圾收集器。因此,在这 5.7 秒内,节点没有响应,我的集群也没有响应,我的网站也没有。这种停机时间每天发生 5 到 10 次。

我在这里做错了什么,或者这种停机时间是不可避免的吗?我是否应该将 Elasticsearch 负载均衡器(即 data=false、master=false 的节点)添加到集群并让我的网站指向这个负载均衡器?或者我应该在我的节点前添加另一种负载均衡器(HAProxy?)?或者这是否意味着服务器、数据有问题?

提前非常感谢

关于集群配置的一些信息

  • 由 2 个节点(5 个分片,1 个副本)组成的 Elasticsearch 1.6.0 集群
  • 集群包含约 1000 万个文档,占用约 30 Gb。
  • 每个节点都是一个 64Gb RAM 服务器,MAX_HEAP_SIZE 设置为 31g
  • 网站每秒运行约 300 个搜索查询和每秒约 100 个索引查询
  • JVM 堆使用率始终在 50% 到 75% 之间,从不超过

【问题讨论】:

  • 是的,在旧 GC 期间,运行 GC 的节点被冻结。这就是Java的情况。关于调整这并不容易:-)。有很多东西要看,你不容易分享这些东西。
  • 如果堆使用率始终在 50% 到 75% 之间,则垃圾收集器不应运行那么长时间(从您发布的日志来看,当 GC 运行 6 次时堆几乎已满秒)。为堆分配更多的 RAM 会有所帮助,但可能还有其他因素在起作用,导致一开始就使用了如此多的 RAM。这些因素将难以追踪和/或修复。
  • 另外,如果可能,请确保始终运行最新的 Java 和 Elasticsearch 版本。
  • 感谢您的回复。我确信我正在运行最新的 ES 和 Java 版本。如果这种停机时间在节点级别是不可避免的,我如何确保整个集群保持正常运行?我认为添加一个节点可以解决这个问题,但似乎节点级停机时间总是变成集群级停机时间......因此我的问题是将负载均衡器放在节点前面
  • ES 文档 (elastic.co/guide/en/elasticsearch/guide/current/…) 说最大堆大小不应超过 31 GB:你认为我还能增加它吗?

标签: java elasticsearch garbage-collection


【解决方案1】:

由于 GC 运行时堆从 21.9gb 变为 4.9gb,我怀疑堆使用率在 50% 到 75% 之间,很可能 GC 在 75% 时触发,然后下降到 ~15%。 如果您没有安装 Marvel - 安装它并监控段数和堆使用量等参数。要降低段数,请在写入很少或没有写入的索引上运行优化 (https://www.elastic.co/guide/en/elasticsearch/reference/2.1/indices-optimize.html)。 如果在 GC 运行时继续减速,请尝试降低堆大小。我知道这听起来适得其反,但在这种情况下它是有道理的。 Elastic 网站上有一篇关于这个主题的好文章 - https://www.elastic.co/blog/a-heap-of-trouble

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2021-12-11
    • 1970-01-01
    • 2012-06-28
    • 2015-12-06
    • 2018-12-30
    相关资源
    最近更新 更多