elasticsearch Data too large问题解决

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 重启注意事项
  1. ES集群千万不要一次性重启全部节点,会导致所有分片被置为 unassigned_shards,重启后需要大量时间重新分配切片。这期间集群会处于red状态,不能写入任何新数据。这在生产环境中会导致灾难性的后果。
  2. 所有,要采用轮流重启的方式。重启一个节点,等该节点重新加入并且集群状态变为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、验证集群
  1. curl命令查看集群状态
curl -uelastic:pwd  -XGET "http://ip:9200/_cluster/health?pretty"
  1. kibana上查看索引状态是否转为正常

  2. 查看钉钉告警是否恢复

  3. 查看日志是否正常采集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值