es Data too large
现象:
1、钉钉上收到es集群监控告警,集群变为yellow
2、kibana上没有数据,打开索引管理报以下错误:
circuit_breaking_exception[[parent] Data too large, data for [<transport_request>] would be [12318476937/11.2gb], which is larger than the limit of [12237372108/12.2gb], real usage: [12318456248/11.2gb]
解决:
1、修改config目录下jvm配置文件中关于jvm的参数
#本人使用的服务器内存配置为64G,所以这里这只jvm参数为31g,es集群jvm参数配置最高不要超过32g,即使服务器配置再高
-Xms31g 表示JVM Heap(堆内存)最小为10g,初始化内存大小
-Xmx31g表示应用JVM最大允许分配的堆内存,程序能够使用的最大内存数
这两个参数最好设置一样,可以避免每次GC后调整堆大小。
2、重启es集群
2.1 如果分片有副本的话,重启过程中,要临时关闭分片复制功能。
每个结点重启时,ElasticSearch集群的高可用和自平衡方案会自动在别的结点上复制该重启结点的分片,这定然导致了很大的IO和网络开支。所以要临时关闭这个功能。
curl -uelastic:pwd -XPUT http://XXX:9200/_cluster/settings -d'
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}'
2.2 重启注意事项
- ES集群
千万不要一次性重启全部节点
,会导致所有分片被置为 unassigned_shards,重启后需要大量时间重新分配切片。这期间集群会处于red状态,不能写入任何新数据。这在生产环境中会导致灾难性的后果。 - 所有,要采用
轮流重启
的方式。重启一个节点,等该节点重新加入并且集群状态变为green后,再重启下一个节点。而且建议最后重启master节点
。如何查看master节点:
#master列是*的就是主节点。
curl -uelastic:pwd -XGET http://XXX:9200/_cat/nodes?v
不要重启logstash,没有意义,还会导致kafka重平衡。
2.3 重启es
su - elasticsearch
/usr/local/elasticsearch/bin/elasticsearch -d
2.4 打开分片复制功能
curl -uelastic:pwd -XPUT http://XXX:9200/_cluster/settings -d'
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}'
3、验证集群
- curl命令查看集群状态
curl -uelastic:pwd -XGET "http://ip:9200/_cluster/health?pretty"
-
kibana上查看索引状态是否转为正常
-
查看钉钉告警是否恢复文章来源:https://www.toymoban.com/news/detail-726338.html
-
查看日志是否正常采集文章来源地址https://www.toymoban.com/news/detail-726338.html
到了这里,关于elasticsearch Data too large问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!