我有一个正在测试的小型ELK群集。 kibana Web界面非常慢,并且会引发很多错误。
Kafka => 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核对并查看了堆栈溢出。似乎唯一的解决方案是增加内存。我已经两次增加了节点上的ram。虽然这似乎解决了一两天,但问题很快就会恢复。 其他解决方案(如清理缓存)没有长期改进。
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
更新
我从logstash获得了大约30天的索引。 2x复制,因此每天10个分片。
UPDATE2
我已将每个节点的内存增加到16GB(总共48GB),并且我也升级到了1.5.2。
这似乎解决了一两天的问题,但问题又回来了。
UPDATE3
This blog article from an elastic employee has good tips解释可能导致这些问题的原因。
答案 0 :(得分:10)
您正在为大量数据建立索引(如果您每天要添加/创建5到20GB)并且您的节点内存非常少。您不会在索引编制方面看到任何问题,但在单个或多个索引上获取数据将导致问题。请记住,Kibana在后台运行查询,而您收到的消息基本上是在说" 我无法为您获取数据,因为我需要放置内存中的数据比我运行这些查询的数据多。"
有两件事情比较简单,应该可以解决你的问题:
关键在于 doc_values 。您需要修改映射以将此属性设置为 true 。原油示例:
[...],
"properties": {
"age": {
"type": "integer",
"doc_values": true
},
"zipcode": {
"type": "integer",
"doc_values": true
},
"nationality": {
"type": "string",
"index": "not_analyzed",
"doc_values": true
},
[...]
更新映射将使未来的索引考虑到这一点,但您需要完全重新索引现有的索引,以便 doc_values 应用于现有索引。 (有关更多提示,请参阅scan/scroll和this博文。)
副本有助于扩展,但如果不减少每个节点的堆大小,则会遇到同样的问题。至于你目前拥有的碎片数量,可能没有必要也没有最佳,但我认为这不是你问题的根本原因。
请注意,上述建议是允许Kibana运行查询并向您显示数据。速度将在很大程度上取决于您设置的日期范围,您拥有的机器(CPU,SSD等)以及每个节点上可用的内存。
答案 1 :(得分:2)
基本想法包括:
哦,并且: