ES提示MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete blo

目录

场景:

分析报错日志:

 es索引只读模式分析:

查看es的内存使用:

查看es的磁盘使用:

 解决方法:

测试保存:

参考:


场景:

再测试环境今天有同事问我es保存数据报错了很奇怪,服务又没有挂掉,前端es服务的数据还能正常显示,怎么突然就写不进去数据了呢,es的日志提示如下 。后面研究了很久记录一下。

{"error":{"root_cause":[{"type":"cluster_block_exception","reason":"index [esbizlog] blocked by:
 [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"}],"type":"cluster_block_exception","reason":"index [esbizlog] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"},"status":429}

分析报错日志:

意思说请求量比较多磁盘空间满了导致es的这个索引变成只读模式了。

 es索引只读模式分析:

Elasticsearch 将索引锁定为只读模式,可能会由以下原因导致:

  1. 内存使用率过高:如果 Elasticsearch 节点的内存使用率过高,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

  2. 磁盘空间不足:如果 Elasticsearch 节点的磁盘空间不足,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

  3. 索引恢复中:如果 Elasticsearch 节点正在从故障中恢复,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

  4. 索引刷新中:如果 Elasticsearch 节点正在刷新索引,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

  5. 索引合并中:如果 Elasticsearch 节点正在合并索引段,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

  6. 索引正在被备份或复制:如果 Elasticsearch 索引正在被备份或复制,可能会导致 Elasticsearch 将索引锁定为只读模式,以防止对其进行写操作。

在这些情况下,Elasticsearch 将索引锁定为只读模式,以避免对索引的写操作。这可以保护索引的完整性,并防止数据丢失。如果您需要对索引进行写操作,您可以尝试解锁索引或调整 Elasticsearch 节点的资源使用情况。

由于测试环境之前正常并没有动因此上述情况 直接排除了索引恢复、索引刷新、索引合并及索引备份或复制,只剩下内存使用率过高及磁盘空间不足两种情况了。

查看es的内存使用:

docker stats 查看如下发现使用率很低.只有9%

查看es的磁盘使用:

docker exec -it dd34534ada6b /bin/bash

df -h 

存在磁盘使用超过95%

 解决方法:

Elasticsearch 将索引锁定为只读模式,把锁定的只读模式去掉就可了,执行如下命令

curl -X PUT  "http://localhost:9200/esbizlog/_settings" -H "Content-Type: application/json"  -u "username:password" -d '{"index.blocks.read_only_allow_delete": null}'
 

测试保存:

再次向es数据中插入数据Ok,测试完成

参考:

Error: disk usage exceeded flood-stage watermark, index has read-only-allow-delete block | Elasticsearch Guide [8.5] | Elastic

猜你喜欢

转载自blog.csdn.net/qq_38423256/article/details/131062957