首页 > 其他分享 >ElasticSearch 常见故障解析与修复秘籍

ElasticSearch 常见故障解析与修复秘籍

时间:2024-12-16 11:28:00浏览次数:11  
标签:常见故障 秘籍 索引 ElasticSearch 分片 集群 磁盘 es

文章目录

一、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状态分析

  1. es集群状态信息查看GET _cat/health,es状态有3种。
    green:所有分片都可用
    yellow:至少有一个副本不可用或者未分配从分片,但是所有主分片都可以用
    red:至少有一个主分片不可用,数据不完整

  2. 查看索引状态
    curl -s -XGET ‘http://:9200/_cat/indices?v’
    curl -s -XGET ‘http://:9200/_cluster/health?level=indices’

  3. 查询未分配的分片
    curl -s -XGET ‘http://:9200/_cat/shards?v’ | grep UNASSIGNED
    curl -s -XGET ‘http://:9200/_cluster/health?level=shards’

  4. 索引副本设置不合理,如果索引副本数设置大于数据节点个数导致yellow状态,需要修改副本修复集群状态
    curl -XPUT http://:9200/unassigned_index/_settings -H ‘Content-Type: application/json’ -d ‘{ “index”: { “number_of_replicas”: replicasCount } }’
    注:# unassigned_index为未分配的分片索引 # replicasCount为新的索引副本数

  5. 正常情况下,未分配的从分片会自动得到分配,集群状态也会恢复 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服务

  1. 当集群磁盘使用率超过85%,会导致新的分片无法分片
  2. 当集群磁盘使用率超过90%,es会尝试将对应的节点的分片迁移到其他磁盘使用率较低的数据节点中
  3. 当集群磁盘使用率超过95%,系统会对es集群中对应节点里每个索引强制设置read_only_allow_delete属性,该节点上所有索引无法写入数据,只能读取和删除对应索引

解决方法

  1. 删除部分历史索引数据
  2. 扩大磁盘容量
  3. 添加新的节点

注: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,分片,集群,磁盘,es
From: https://blog.csdn.net/qq_40477248/article/details/144431131

相关文章

  • APIsix 实操秘籍:部署迁移实战篇(下)
    接上篇:《APIsix实操秘籍:基础概念入门篇(上)》链接:link文章目录2、核心概念2.2、关键术语2.3、APIsix配置文件3、开启APIsix之旅3.1、APISIX网关高可用部署架构图3.2、裸金属部署3.3、Docker部署3.4、Helm部署apisix3.5、升级迁移指南3.6、常规插件2、核心概念2......
  • docker启动ES增加elasticsearch-header访问,解决跨域问题
    在做一件什么事情:docker部署ES服务,希望增加可视化工具。于是选择了一种简单的方式,增加elasticsearch-header组件访问。这样只需要在浏览器上输入地址可以直接访问。遇到了什么问题:提示跨域访问问题分析:服务器端放开访问限制解决方案:增加跨域访问配置脚本如下:点击查看代......
  • C 语言函数:数字江湖的秘籍要诀与侠义传功
    一、函数的概念数学中我们常见到函数的概念。但是你了解C语言中的函数吗?维基百科中对函数的定义:子程序在计算机科学中,子程序(英语:Subroutine,procedure,function,routine,method,subprogram,callableunit),是一个大型程序中的某部分代码,由一个或多个语句块组成。它......
  • 【Elasticsearch】关键数据类型
    ......
  • Elasticsearch实战应用:打造高效的全文搜索与高亮显示功能
    Elasticsearch实战应用:打造高效的全文搜索与高亮显示功能在当今的互联网环境中,高效的全文搜索功能已成为众多电商平台、新闻网站、博客系统等应用场景的核心需求。Elasticsearch作为一款开源的全文检索服务器,凭借其强大的倒排索引机制和灵活的查询能力,成为实现这一需求的理......
  • 推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue
    推荐一款轻量级且强大的ElasticsearchGUI:elasticvue很多同学都是用过Elasticsearch的GUI工具Kibana,但Kibana相对比较重,这篇文章,笔者推荐推荐一款轻量级且强大的ElasticsearchGUI:elasticvue。1下载安装进入:https://github.com/cars10/elasticvue/releases/t......
  • 在Elasticsearch (ES) 中,integer 和 integer_range的区别
    在Elasticsearch(ES)中,integer和integer_range是两种不同的字段类型,它们用于存储和查询不同类型的数据。Integer:integer类型是用于存储32位整数值的简单数据类型。这个类型的字段适合用来表示单一的整数数值,例如用户的年龄、商品的数量等。支持标准的数值操作......
  • Elasticsearch Java Api Client中DSL语句的查询方法汇总
    说明:示例代码依赖的是co.elastic.clients:elasticsearch-java:8.16.1。1、termQuery方法用途:用于精确匹配某个字段的完全相等的值。这在查询如文档的ID、状态码等具有明确取值的字段时非常有用。参数说明:field:这是一个字符串参数,用于指定要进行精确匹配查询的字段名称......
  • mysql&elasticsearch备份恢复
    目录1.mysql备份1.1.使用mysqldump命令备份整个数据库:1.2.备份特定表:2.恢复MySQL数据库2.1.使用备份文件恢复数据库:3.备份elasticsearch索引3.1.注册本次备份的存储路径3.2.查看当前备份快照信息3.3.备份索引数据4.恢复elasticsearch索引4.1.恢复索......
  • Elasticsearch 系列(八)- 使用NSSM将Kibana安装为Windows服务
    本章将和大家分享如何使用NSSM将Kibana安装为Windows服务。废话不多说,下面我们直接进入主题。一、下载并安装Node.js我们的 Kibana是用 Node.js写的,所以在安装 Kibana之前我们首先需要先安装一下 Node.js。Node.js官方下载地址:https://nodejs.org/en下载完成后,双击运......