ElasticSearch重启失败的解决方案
原文网址:ElasticSearch重启失败的解决方案_IT利刃出鞘的博客-CSDN博客
简介
本文介绍ES重启失败的解决方法。
问题描述
对ES集群进行了重启,集群重启几分钟后,部分实例开始逐渐下线,导致集群不可恢复。
集群规模
普通模式,3EsMaster,40EsNode,每实例均为31GB内存。
数据量:
1000多index, 38365个shard,其中主分片28695个,数据量100T。
日志分析
ES集群重启,恢复几分钟后,出现大量ping Master节点超时的错误,然后ES节点实例开始逐渐下线,导致集群恢复不了。
原因分析
集群分片数过多,并发恢复过程中,同时业务没有停止,导致EsMaster处理压力过大,number_of_pending_tasks(挂起的任务)逐渐增加,到达4W多,大量的任务阻塞。
此时_cluster/health命令已无法正常返回结果,导致大量ES实例处于恢复中状态,连续3次检查超时后,Manager会重启实例。这会导致挂起的任务越来越多,集群不可恢复。
处理步骤
- 重启的过程中,发现大量ES实例执行_cluster/health命令超时错误,但其实数据仍在缓慢恢复中。于是注释_cluser/health检查脚本,防止实例多次失败后,被manager重启。
- 再次重启后,发现大量分片处于未分配状态,执行_cluster/allocation/explain查看分片未被分配的原因,发现shard恢复时的cluster.routing.allocation.node_current_incoming达到了最大值。鉴于集群主分片数太多,于是调大恢复参数至:cluster.routing.allocation.node_initial_primaries_recoveries 200 cluster.routing.allocation.node_concurrent_recoveries 100 cluster.routing.allocation.cluster_concurrent_rebalance 100
同时因为有业务数据写入,将分片分配设置为none:cluster.routing.allocation.enable none - 再次重启后,集群开始恢复,查看_cat/thread_pool/,generic 线程池(分片恢复会用到该线程池)已经到达128,查看界面CPU使用率也在70-80,查看日志,分片正在恢复中。
- 10分钟左右,集群恢复到80%左右,开始恢复缓慢,初始化分片(initializing_shards)有2000多个,这些分片初始化的过程耗时接近2小时。
- 原因分析:在多次重启的过程中,业务侧并没有停止,由于有些primary新写入了数据,在数据的recovery过程中,需要从主副本之间拷贝数据,或者利用translog恢复数据。直到primary-replica完全in-sync后,才会完成初始化。 这个过程取决于shard的大小和新写入量的大小(初始化的分片普遍数据量较大)。
- 最后有一个分片无法分配,查看原因,该分片无法从translog in-sync(同步)。查看该索引settings,sync_interval设置为360s,设置同步刷新时间过多,会有一定几率发生数据丢失(客户有原数据备份)。
- 集群恢复后,还原集群参数配置和健康检查脚本。
- 原因分析:在多次重启的过程中,业务侧并没有停止,由于有些primary新写入了数据,在数据的recovery过程中,需要从主副本之间拷贝数据,或者利用translog恢复数据。直到primary-replica完全in-sync后,才会完成初始化。 这个过程取决于shard的大小和新写入量的大小(初始化的分片普遍数据量较大)。
问题根因
- 集群的分片数过多,按一个实例管理600shard为标准,该集群分片数过度超标的。合 理设置索引分片,定期对历史索引进行处理(关闭或删除不需要的索引)。
- 目前的健康检查机制需要优化,使用_cluster/health去判断各实例的健康是否合理,包 括检查周期等。在EsMaster压力过大的情况下,_cluster/health可能会造成误判。
ElasticSearch重启失败的解决方案相关推荐
- 记一次ElasticSearch重启之后shard未分配问题的解决
记一次ElasticSearch重启之后shard未分配问题的解决 环境 ElasticSearch6.3.2,三节点集群 Ubuntu16.04 一个名为user的索引,索引配置为:3 primar ...
- 电脑计算机打不开显示远程过程,Win10打不开图片提示“远程过程调用失败”的解决方案...
Windows10系统打不开图片提示"远程过程调用失败"怎么办?这是近来不少用户在使用Win10过程中经常会碰到的问题,这个问题会给我们带来不少困扰,该怎么办呢?下面,系统城小编整 ...
- CDH修改静态资源池配置,NodeManager重启失败问题
问题描述: 修改静态资源池配置的时候,重启整个CM之后,突然发现一个YARN中的NodeManager重启失败,问题NodeManager服务不能重启也不能停止.通过链接(http://hadoopi ...
- 鸿蒙os2.0环境搭建gradle-5.4.1-all.zip下载失败问题解决方案
鸿蒙os2.0环境搭建gradle-5.4.1-all.zip下载失败问题解决方案 解决 gradle-5.4.1-zip因拉取超时而失败的这个问题 鸿蒙官网的解决方案 1.按照上面链接找到 环境安装 ...
- 计算机每次开机配置更新失败,win10系统开机总是提示配置windows更新失败的解决方案...
win10系统开机总是提示配置windows更新失败的解决方案? 我们在操作win10系统电脑的时候,常常会遇到win10系统开机总是提示配置windows更新失败的问题.那么出现win10系统开机总 ...
- 华为服务器DHCP进不去系统,dhcp服务器重启失败
dhcp服务器重启失败 内容精选 换一换 启动目的端时失败,错误码:SMS.3103,提示迁移失败原因"对目的服务器重新建立引导失败".启动目的端后,系统会重新安装目的端Grub, ...
- nginx重启失败nginx -s reload
nginx重启失败@TOC 欢迎 项目场景: 提示: nginx 重启失败出现:"/data/wwwlogs/nginx.pid" failed (2: No such file ...
- PostgreSQL切换用户,提示对等认证失败的解决方案
PostgreSQL切换用户,提示对等认证失败的解决方案 参考文章: (1)PostgreSQL切换用户,提示对等认证失败的解决方案 (2)https://www.cnblogs.com/zonglr ...
- Mongodb异常关闭重启失败解决
Mongodb异常关闭重启失败解决 参考文章: (1)Mongodb异常关闭重启失败解决 (2)https://www.cnblogs.com/net-saiya/p/4617925.html 备忘一 ...
最新文章
- Windows 10 Visual Studio 2017 安装配置 Apache Thrift (C++)
- elastic-job详解(一):数据分片
- Spring Cloud依赖
- 从上海到旧金山,2021 LiveVideoStackCon回归上海
- idea+maven下jrebel的安装破解
- 3.1_ 4连续分配管理方式
- itext html 转换 pdf文件,利用itext实现html转pdf文档
- mysqlbinlog日志一天产生太多脚本
- 端到端半监督目标检测框架Instant-Teaching:
- 【elasticsearch】 flink es sink Connection refused
- ORACLE批量更新四种方法比较
- fscokopen 中执行超时 使用stream_set_timeout设置超时
- Python 数据结构 树
- hg255d php,hg255d强刷华硕rt-n13u官方固件果断中继成功
- Java生成csv文件设置文本格式
- android 阅读器字体,Android字体设置及Roboto字体使用方法
- 3d稀疏卷积——spconv源码剖析(一)
- RHCE 7.0 考试命令整理
- CSS 2D转换和源点的影响原理(translate、scale、skew、rotate)
- mybatis日志配置