ElasticSearch 常见故障解析与修复秘籍
文章目录
- 一、ElasticSearch启动服务提示无法使用root用户
- 二、ElasticSearch启动提示进程可拥有的虚拟内存少
- 三、ElasticSearch提示用户拥有的可创建文件描述符太少
- 四、ElasticSearch集群yellow状态分析
- 五、ElasticSearch节点磁盘使用率过高,read_only状态问题解决
- 六、ElasticSearch分片数达上限
一、ElasticSearch启动服务提示无法使用root用户
问题现象:[WARN ][o.e.b.ElasticSearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org.ElasticSearch.bootstrap.StartupException: java.lang.RuntimeException: can not run ElasticSearch as root
解决:由于ElasticSearch程序启动需要使用非root用户,比如添加es用户用于启动es服务使用
例子:
# useradd es //添加es用户
# passwd es //设置es用户密码
# 的修改
# chown -R es:es 数据目录路径 //修改es数据存储路径权限
# su es //切换es用户
$ 启动ElasticSearch服务即可
二、ElasticSearch启动提示进程可拥有的虚拟内存少
问题现象:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:
方法1(临时):切换用户root输入命令
# sysctl -w vm.max_map_count=262144;
查看结果:# sysctl -a|grep vm.max_map_count
方法2:切换root用户修改配置文件sysctl.conf
# vim /etc/sysctl.conf
添加内容:vm.max_map_count=655360
# sysctl -p //加载命令生效
注:需要重新启动ElasticSearch服务
三、ElasticSearch提示用户拥有的可创建文件描述符太少
问题现象:max file descriptors [4096] for ElasticSearch process is too low, increase to at least [65535]
解决:切换root用户修改配置文件
#/etc/security/limits.conf
添加如下内容
es hard nofile 65535
es soft nofile 65535
注:切换es用户重启ElasticSearch服务即可
四、ElasticSearch集群yellow状态分析
-
es集群状态信息查看GET _cat/health,es状态有3种。
green:所有分片都可用
yellow:至少有一个副本不可用或者未分配从分片,但是所有主分片都可以用
red:至少有一个主分片不可用,数据不完整 -
查看索引状态
curl -s -XGET ‘http://:9200/_cat/indices?v’
curl -s -XGET ‘http://:9200/_cluster/health?level=indices’ -
查询未分配的分片
curl -s -XGET ‘http://:9200/_cat/shards?v’ | grep UNASSIGNED
curl -s -XGET ‘http://:9200/_cluster/health?level=shards’ -
索引副本设置不合理,如果索引副本数设置大于数据节点个数导致yellow状态,需要修改副本修复集群状态
curl -XPUT http://:9200/unassigned_index/_settings -H ‘Content-Type: application/json’ -d ‘{ “index”: { “number_of_replicas”: replicasCount } }’
注:# unassigned_index为未分配的分片索引 # replicasCount为新的索引副本数 -
正常情况下,未分配的从分片会自动得到分配,集群状态也会恢复
green
。某些特殊情况可能需要手动分配掉未分配的从分片
注:# unassigned_index为未分配的分片索引 # num为未分配的分片编号 # nodeName为节点名称,也可以为节点编号ID
curl -XPOST http://<host>:9200/_cluster/reroute -H 'Content-Type: application/json' -d '{ "commands": [{ "allocate_replica": { "index": "unassigned_index", "shard": num, "node": "nodeName" } }] }'
要删除一个索引
五、ElasticSearch节点磁盘使用率过高,read_only状态问题解决
问题现象:当磁盘使用率超过85%甚至到100%会导致es集群物业正常提供服务,进行索引请求时返回异常信息 org.ElasticSearch.cluster.block.ClusterBlockException: blocked by: [FORBIDDEN/12/index read-only / allow delete (api)] 集群进入只读模式或者删除操作
问题分析:由于磁盘使用率过高导致,数据节点的磁盘使用率存在三个水位线,超过水位线会影响ElasticSearch服务
- 当集群磁盘使用率超过85%,会导致新的分片无法分片
- 当集群磁盘使用率超过90%,es会尝试将对应的节点的分片迁移到其他磁盘使用率较低的数据节点中
- 当集群磁盘使用率超过95%,系统会对es集群中对应节点里每个索引强制设置read_only_allow_delete属性,该节点上所有索引无法写入数据,只能读取和删除对应索引
解决方法:
- 删除部分历史索引数据
- 扩大磁盘容量
- 添加新的节点
注:es磁盘分配默认是85%和90%,做好集群规划和容量评估。同时做好集群监控和系统层面监控
六、ElasticSearch分片数达上限
连接es 错误,查看 es 日志,发现有报
In a future major version, this request will fail because this action would add [10] total shards, but this cluster currently has [1216]/[1000] maximum shards open. Before upgrading, reduce the number of shards in your cluster or adjust the cluster setting [cluster.max_shards_per_node].
解决办法:增大最大分片上限为 6万,根据es索引保留时长实际需要增大
curl -XPUT -u elastic:你的密码 -H "Content-Type: application/json" http://172.17.0.1:9200/_cluste
相关文章:

ElasticSearch 常见故障解析与修复秘籍
文章目录 一、ElasticSearch启动服务提示无法使用root用户二、ElasticSearch启动提示进程可拥有的虚拟内存少三、ElasticSearch提示用户拥有的可创建文件描述符太少四、ElasticSearch集群yellow状态分析五、ElasticSearch节点磁盘使用率过高,read_only状态问题解决六…...

序列模型的使用示例
序列模型的使用示例 1 RNN原理1.1 序列模型的输入输出1.2 循环神经网络(RNN)1.3 RNN的公式表示2 数据的尺寸 3 PyTorch中查看RNN的参数4 PyTorch中实现RNN(1)RNN实例化(2)forward函数(3…...
对rust的全局变量使用drop方法
文章目录 rust处理全局变量的策略方法1:在main中自动Drop全局变量 参考 rust处理全局变量的策略 Rust 的静态变量不会在程序退出时自动调用 Drop,因为它们的生命周期与进程绑定。 use std::sync::OnceLock;struct GlobalData {content: String, }impl …...

Node.js教程入门第一课:环境安装
对于一个程序员来说,每学习一个新东西的时候,第一步基本上都是先进行环境的搭建! 从本章节开始让我们开始探索Node.js的世界吧! 什么是Node.js? 那么什么是Node.js呢?简单的说Node.js 就是运行在服务端的 JavaScript JavaScript…...

Visual Studio 使用 GitHub Copilot 扩展
🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...
【Qualcomm】IPQ5018获取TR069 WiFi 接口Stats状态方法
IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...
数字营销咨询,照亮企业营销数字化每一步
在快消品领域,面对市场竞争日益激烈的现状,营销端的数字化升级已经成为企业生意增长的重要驱动力。 然而,鉴于营销端数字化建设的高昂成本及其广泛覆盖的业务范畴,企业在启动此类项目之前,通常会遭遇一系列挑战与顾虑&…...

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号
效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改,增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…...
【Cmake】
1 设置安装路径 -DCMAKE_INSTALL_PREFIX"安装路径"2 使用交叉编译 -DCMAKE_C_COMPILE"交叉编译器绝对路径"3 编译静态库 -DPAHO_BUILD_STARTTRUE...

Flutter 内嵌 unity3d for android
前言: 最近刚整完 unity3d hybridCLR 更新代码和资源,我们 趁热打铁 将 Unity3D 嵌入 Flutter 应用中。实现在 Flutter 使用 Unity3D, 可以做 小游戏 大游戏; 之前都是 内嵌 Webview 来实现的。虽然 CocosCreator 做出来的效果也不错…...

sqlite加密-QtCipherSqlitePlugin 上
1、下载并解压软件 https://download.csdn.net/download/notfindjob/90140129 2、编译(可支持Qt5.12编译) 3、安装插件...

正交投影 (Orthographic Projection) 详解
正交投影 (Orthographic Projection) 详解 正交投影是一种将三维空间中的物体投影到二维平面上的方法,它在计算机图形学、建筑设计、工程绘图等领域中广泛应用。与透视投影不同,正交投影不会随着距离的变化而改变物体的大小,因此所有平行线在…...

盛元广通畜牧与水产品检验技术研究所LIMS系统
一、系统概述 盛元广通畜牧与水产品检验技术研究所LIMS系统集成了检测流程管理、样品管理、仪器设备管理、质量控制、数据记录与分析、合规性管理等功能于一体,能够帮助实验室实现全流程的数字化管理。在水产、畜牧产品的质检实验室中,LIMS系统通过引入…...

三维空间刚体运动4-1:四元数表示变换(各形式相互转换加代码——下篇)
三维空间刚体运动4-1:四元数表示变换(各形式相互转换加代码——下篇) 4. 四元数到其它旋转表示的相互转换4.1 旋转向量4.2 旋转矩阵4.3 欧拉角4.3.1 转换关系4.3.2 转换中的万象锁问题 5. 四元数的其他性质5.1 旋转的复合5.2 双倍覆盖5.3 指数…...
PyTorch如何通过 torch.unbind 和torch.stack动态调整张量的维度顺序
笔者一篇博客PyTorch 的 torch.unbind 函数详解与进阶应用:中英双语中有一个例子如下: # 创建一个 3x2x2 的三维张量 x torch.tensor([[[1, 2], [3, 4]],[[5, 6], [7, 8]],[[9, 10], [11, 12]]])# 第一步:沿第 0 维分解为 3 个 2x2 张量 un…...

【Unity3D】报错libil2cpp.so找不到问题
mainTemplate.gradle文件末尾添加: **IL_CPP_BUILD_SETUP** 此报错发生在低版本的Unity升级到高版本后,例如Unity2019升级到Unity2021,而Unity2019默认创建的mainTemplate.gradle文件是不包含**IL_CPP_BUILD_SETUP** 因此会导致libil2cpp.so…...
事件冒泡机制详解
一、事件传播的三个阶段 1. 捕获阶段 事件从最外层元素(如document)开始,沿着 DOM 树向目标元素传播。这个阶段就像是事件的“下行通道”,在这个过程中,事件会经过目标元素的祖先元素。不过,在捕获阶段&a…...

红米Note 9 Pro5G刷LineageOS
LineageOS介绍 LineageOS 是一个基于 Android 的开源操作系统,是面向智能手机和平板电脑等设备的替代性操作系统。它是 CyanogenMod 的继承者,而 CyanogenMod 是曾经非常受欢迎的一个第三方 Android 定制 ROM。 在 2016 年,CyanogenMod 项目因…...

6.3.1 MR实战:计算总分与平均分
在本次实战中,我们的目标是利用Apache Hadoop的MapReduce框架来处理和分析学生成绩数据。具体来说,我们将计算一个包含五名学生五门科目成绩的数据集的总分和平均分。这个过程包括在云主机上准备数据,将成绩数据存储为文本文件,并…...

ARM循环程序和子程序设计
1、计算下列两组数据的累加和并存入到sum1和 sum2 单元中。datal:0x12,0x935,0x17,0x100,0x95,0x345。 data2:0x357,0x778,0x129,0x188,0x190,0x155,0x167。 1.定义数据段 ;定义数据段,类型为data(表示为数据段),权限为可读可写(程序可以读取和修改这…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...