gpt4 book ai didi

java - 清空垃圾收集器时 Elasticsearch 不可用?

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:45 25 4
gpt4 key购买 nike

我有一个由两个节点组成的 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 运行时堆从 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

关于java - 清空垃圾收集器时 Elasticsearch 不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162623/

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