Elasticsearch--解决磁盘使用率超过警戒水位线

这篇具有很好参考价值的文章主要介绍了Elasticsearch--解决磁盘使用率超过警戒水位线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文网址:Elasticsearch--解决磁盘使用率超过警戒水位线_IT利刃出鞘的博客-CSDN博客

简介

本文介绍如何解决ES磁盘使用率超过警戒水位线的问题。

问题描述

当客户端向 Elasticsearch 写入文档时候报错:

cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];

在 elasticsearch 的日志文件中报错如下:

flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only

出现如上问题多半是:磁盘使用量超过警戒水位线,索引存在 read-only-allow-delete 索引块数据。

报错释义

基础认知:磁盘三个警戒水位线:

属性名 属性值 含义
cluster.routing.allocation.disk.watermark.low 85% 低警戒水位线
cluster.routing.allocation.disk.watermark.high 90% 高警戒水位线
cluster.routing.allocation.disk.watermark.flood_stage 95% 洪泛警戒水位线

Elasticsearch--解决磁盘使用率超过警戒水位线,ELK,elasticsearch,搜索引擎,大数据

本文“问题描述”的报错表明数据节点的磁盘空间严重不足,并且已达到磁盘洪泛警戒水位线(磁盘使用率95%+,洪水泛滥的意思)。

为防止磁盘变满,当节点达到洪泛警戒水位线时,Elasticsearch 会阻止向该节点的任何索引分片写入数据,后面还会具体介绍如何阻止。

如果该数据块影响到相关的系统索引,可能会导致 Kibana 或者其他 Elastic Stack 功能不可用。

修复方案

临时方案:上调磁盘警戒水位线

要立即恢复写入操作,你可以暂时上调磁盘警戒水位并移除写入块。

如下命令行是集群层面更新设置的操作。

PUT _cluster/settings
{
    "persistent":   {
        "cluster.routing.allocation.disk.watermark.low":   "90%",
        "cluster.routing.allocation.disk.watermark.high":   "95%",
        "cluster.routing.allocation.disk.watermark.flood_stage":   "97%"
    }
}

索引块的五种不同状态如下:

Elasticsearch--解决磁盘使用率超过警戒水位线,ELK,elasticsearch,搜索引擎,大数据

​状态一:index.blocks.read_only

设置为 "true"可以使索引和索引元数据只读,"false "可以允许写入和元数据改变。

状态二:index.blocks.read_only_allow_delete

类似于index.blocks.read_only,但也允许删除索引释放磁盘资源。

基于磁盘的分片分配器(The disk-based shard allocator)可以自动添加和删除index.blocks.read_only属性的数据块。

这里依然会引申出删除索引文档和删除索引本身的区别等知识点:

  1. 删除索引文档会出现删除后磁盘使用率反而增加的现象,因为删除的本质是 version 的 update;只有删除索引才相当于物理删除,会立即释放磁盘空间。
  2. 当 index.blocks.read_only_allow_delete 被设置为true时,删除文档是不允许的,仅允许删除索引。
  3. 当磁盘使用率达到洪泛警戒水位线 95% 时,Elasitcsearch 会强制所有包含分片数据的索引的数据库设置为:index.blocks.read_only_allow_delete 属性。
  4. 当磁盘使用率低于高警戒水位线 90% 时,index.blocks.read_only_allow_delete 属性会自动释放。

状态三:index.blocks.read

设置为 "true",代表禁止对索引进行读操作。

状态四:index.blocks.write

设置为 "true "代表禁止对索引的数据写入操作。

与read_only不同,这个设置并不影响元数据。例如,你可以用一个 write 块关闭一个索引,但是你不能用一个 read_only 块关闭一个索引。

状态五:index.blocks.metadata

设置为 "true "代表禁用索引元数据的读写。

所以,如下的设置本质上是破除磁盘洪泛警戒水位线 95% 的 index.blocks.read_only_allow_delete 的限制,让索引继续可以写入数据。

个人评价:应急可以用。

PUT */_settings?expand_wildcards=all
{
    "index.blocks.read_only_allow_delete": null
}

长期方案

作为长期解决方案,建议将节点添加到不受影响的数据层或升级现有节点实现节点磁盘扩容以增加磁盘空间。

比如:data_hot 热节点爆满,建议:

  • 添加新的热节点
  • 为已有热节点磁盘扩容。

要释放额外的磁盘空间,你可以使用删除索引 API 删除不需要的索引。

DELETE my-index

4.5 重置磁盘警戒水位线操作

当长期解决方案到位时,可使用如下命令行重置磁盘警戒水位线。文章来源地址https://www.toymoban.com/news/detail-752574.html

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.disk.watermark.low": null,
"cluster.routing.allocation.disk.watermark.high": null,
"cluster.routing.allocation.disk.watermark.flood_stage": null
}
}

到了这里,关于Elasticsearch--解决磁盘使用率超过警戒水位线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • io使用率高运行堵塞怎么解决?linux系统由io使用率高引起的运行堵塞的解决方法

    1.在宝塔查看服务器负载100%,而cpu和内存使用率都正常 输入top命令查看平均负载:

    2024年02月15日
    浏览(33)
  • Oracle查看表空间使用率及爆满解决方案

    Oracle查看表空间使用率及爆满解决方案 一、查看表空间使用率 二、扩展大小或增加表空间文件 1.查看数据库表空间文件: 2.查看所有表空间的总容量: 3.查看数据库表空间使用率 4.1.查看表空间总大小、使用率、剩余空间 4.2.查看表空间使用率(包含temp临时表空间) 5.查看具体表

    2024年02月10日
    浏览(52)
  • Redis内存使用率高,内存不足问题排查和解决

    表面现象是系统登录突然失效,排查原因发现,使用redis查询用户信息异常,从而定位到redis问题 我的redis使用的是华为云的redis分布式缓存服务,所以在问题排查方面,我们可以结合华为云提供的丰富的分析诊断工具来辅助排查解决问题。 1、问题定位到redis上,登陆redis服务

    2024年02月03日
    浏览(29)
  • Linux服务器CPU使用率过高排查与解决思路

    日常工作中有时候会遇到Linux服务器上出现CPU负载过高的情况,影响程序的运行,一般的排除思路如下: 然后按shift+p按照CPU排序,找到占用CPU过高的进程的pid 找到进程中消耗资源最高的线程的id 将需要的线程ID转换为16进制格式 bc是linux的计算器命令 查看线程状态信息 grep

    2024年01月21日
    浏览(38)
  • 【DBA笔记3】Oracle之表空间使用率满及空间不足解决方案(上)

    目录 问题背景: 问题描述: 解决方案: 操作步骤: 一、查询对应表空间使用情况 二、修改对应表空间  有项目上出现前台业务功能报错,怀疑是数据库GS表空间满 ORA-01653:unable to extend table GSP### by 7 in tablespace GS 错误的具体内容如下: ORA-01653: unable to extend table GSP###  by 7 

    2023年04月21日
    浏览(33)
  • python-在系统托盘显示CPU使用率和内存使用率

    一、添加轮子 1.添加托盘区图标库  infi.systray 2.添加图像处理库  Pillow 3.添加  psutil  来获取CPU、内存信息 二、完整代码 三、实际效果展示

    2024年02月05日
    浏览(48)
  • Oracle 如何提高空间使用率?

    oracle尽量保证一行的数据能够放在同一个数据块当中,有的时候行会发生行迁移和行链接。 行链接 :有一个列的字段是大对象(long,longlong)一行占的数据一整个块都放不下,则oracle会把这行的数据分为两部分或多部份,存放到不同的数据块,这种现象叫做行链接。 行链接

    2024年02月21日
    浏览(37)
  • Delphi的使用率和前景

    Delphi是一种基于Pascal语言的高级编程语言,由美国Borland公司(后来改名为CodeGear,现在归属于Embarcadero公司)开发。自1995年问世以来,Delphi已经经历了20多年的发展历程,成为了Windows平台上广泛应用的开发工具之一。本文将从Delphi的历史、特点、优缺点和应用实例等方面,探

    2024年02月13日
    浏览(27)
  • 【linux】查看CPU的使用率

    命令1:top 总体系统信息 uptime:系统的运行时间和平均负载。 tasks:当前运行的进程和线程数目。 CPU:总体 CPU 使用率和各个核心的使用情况。 内存(Memory):总体内存使用情况、可用内存和缓存。 查看 CPU 使用率 以下是一些常用的CPU使用率相关字段: %Cpu(s):显示整个系统

    2024年04月23日
    浏览(43)
  • 测试:虚拟机查看CPU使用率

    Windows虚拟机 任务管理器 : 在虚拟机中,您可以打开任务管理器(Ctrl + Shift + Esc),然后在“进程”标签下查看CPU使用率。 PowerShell : 使用PowerShell命令 Get-VM | Select-Object Name, CPUUsage 可以查询虚拟机的CPU使用率。 VMware vSphere Client : 如果您的虚拟机运行在VMware环境中,可以使用

    2024年02月01日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包