【发布时间】:2015-04-28 17:57:56
【问题描述】:
我有一个小型 ELK 集群正在测试中。 kibana web 界面非常慢并且会抛出很多错误。
卡夫卡 => 8.2
Logstash => 1.5rc3(最新)
Elasticsearch => 1.4.4(最新)
Kibana => 4.0.2(最新)
在 Ubuntu 14.04 上,elasticsearch 节点每个都有 10GB 的内存。我每天要获取 5GB 到 20GB 的数据。
在 kibana Web 界面中运行一个只有 15 分钟数据的简单查询也需要几分钟,而且经常会引发错误。
[FIELDDATA] Data too large, data for [timeStamp] would be larger than limit of [3751437926/3.4gb]]
这些关于分片失败的错误只出现在 kibana 中。根据所有其他插件(head,kopf),elasticsearch 分片非常好,集群是绿色的。
我已经检查了 google 组 IRC 并查看了堆栈溢出。似乎唯一的解决方案是增加内存。我已经两次增加了节点上的内存。虽然这似乎可以解决一两天,但问题很快又回来了。 其他解决方案(例如清理缓存)没有长期改进。
curl -XPUT 'http://elastic.example.com:9200/cache/clear?filter=true'
curl -XPOST 'http://elastic.example.com:9200/_cache/clear' -d '{ "fielddata": "true" }'
根据 KOPF 插件,在完全空闲的集群上,堆空间量通常接近 75%。 (我是公司中唯一使用它的人)。 3 个具有 10GB 内存的节点对于我拥有的数据量应该绰绰有余。
我也尝试将断路器调整为suggested by this blog.
PUT /_cluster/settings -d '{ "persistent" : { "indices.breaker.fielddata.limit" : "70%" } }'
PUT /_cluster/settings -d '{ "persistent" : { "indices.fielddata.cache.size" : "60%" } }'
如何防止这些错误,并解决 kibana 的极度缓慢问题?
https://github.com/elastic/kibana/issues/3221
elasticsearch getting too many results, need help filtering query
http://elasticsearch-users.115913.n3.nabble.com/Data-too-large-error-td4060962.html
更新
我有大约 30 天的 logstash 索引。 2x 复制,即每天 10 个分片。
更新2
我已将每个节点的内存增加到 16GB(总共 48GB),并且我还升级到了 1.5.2。
这似乎可以解决一两天的问题,但问题又回来了。
更新3
This blog article from an elastic employee has good tips 解释导致这些问题的原因。
【问题讨论】:
-
至于速度问题,卷曲同一个查询是否也很慢?
-
我不确定如何使用 curl 进行查询。我所做的只是打开 kibana,并尝试查看最近 15 分钟的数据。没有搜索,没有查询,没有过滤器。
-
关于 Update2:RAM 的增加使您可以运行更多数据,但您仍然遇到同样的问题,因为索引的数据太多,ES 无法将其全部加载内存来运行查询。这对于“重度”Logstash 用户来说是一个常见问题,因为 LS 默认索引所有内容。您可以尝试做的是在其根部调整您的 LS 设置,以便您只索引重要字段并忽略(或至少不索引)其他字段。否则,正如我在下面建议的那样, doc_values 会节省您的时间,但使用大型 LS 映射来放置有点乏味。
标签: elasticsearch