es-问题处理-read-only/allow delete

当Elasticsearch出现read-only/allow delete错误时,可能是由于内存不足或磁盘空间紧张导致。内存不足时,ES会触发保护机制禁止写入;磁盘使用率超过85%则停止分配分片。临时解决方案包括删除旧数据,彻底解决方法涉及磁盘扩容、调整索引副本数量或增加数据节点。

一、现象:

1.read-only/allow delete

2.ES只能读,不能增、删

3.取出的数据排序混乱

 

二、排错与验证

检查服务器状况:内存、磁盘使用情况,磁盘使用率为95%

df -vh   #查看挂载磁盘空间
free -g  #内存

 

三、界定问题

1.内存不足

JVMMemoryPressure 超过92%并持续30分钟时,ES触发保护机制,并且阻止写入操作,以防止集群达到红色状态,启用写保护后,写入操作将失败,并且抛出 ClusterBlockException ,无法创建新索引,并且抛出 IndexCreateBlockException ,当五分钟内恢复不到88%以下时,将禁用写保护。

2.磁盘空间不足

es的默认磁盘水位警戒线是85%,一旦磁盘使用率超过85%,es不会再为该节点分配分片,es还有一个磁盘水位警戒线是90%,超过后,将尝试将分片重定位到其他节点。

 

四、处理方式:

1.临时应对方案:

删除三个月前的交易日志,可以采用curl或者postMan,以下是curl的示例

步骤:

  • es磁盘已满而无法索引更多文档,则elasticsearch将切换为只读。它确保了只读查询的可用性。Elasticsearch不会自动切换回来,可以使用如下方法切换回正常模式。

curl -XPUT -H "Content-Type: application/json" http://esIP:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

验证:查看指定索引的设置信息

curl -XPUT -H "Content-Type: application/json" http://esIp:9200/索引名称/_settings -d
'{"index": {"blocks": { "read_only_allow_delete": "false"}}}'

验证结果

{"acknowledged":true}
  • 根据时间进行数据删除

curl -X POST "http://esIP:9200/索引名称/_delete_by_query?pretty" -H 'Content-Type: application/json' -d 
'{"query":{ "range": {
      "你要使用删除的时间字段": {  
          "lt": "now-90d",   #保留的数据的时间
          "format": "epoch_millis" #默认就好,可以自定义
      }
  }
}}'
  • 返回数据格式,告诉你用时和删除多少数据等

{
    "took" : 147,
    "timed_out": false,
    "deleted": 119,
    "batches": 1,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
      "bulk": 0,
      "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1.0,
    "throttled_until_millis": 0,
    "total": 119,
    "failures" : [ ]
}

2.彻底解决方案

磁盘扩容

3.其他:

删除无用索引

将旧索引的副本数调小

  • 修改索引副本数量为1,配置生效后集群开始删除index副本数据,datanode 节点磁盘空间逐步释放。

curl -XPUT -H "Content-Type: application/json" http://esIp:9200/索引名称/_settings -d '{"index": {"number_of_replicas": "1"}}'

增加数据节点

检查定时任务是否按时删除数据

 

 

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值