Elasticsearch6.2服务器升配后的bug(避坑指南)


Posted in Servers onSeptember 23, 2022

本篇文章记录最近一次生产服务器硬件升级之后引起集群不稳定的现象,希望可以帮到有其它人避免采坑。

一、问题描述

升级后出现的异常如下:

出现限流日志:stop throttling indexing: numMergesInFlight=8, maxNumMerges=9应用写入集群的rt耗时变高,同时集群监控的indexing的时长也变高mlocked的内存调用一直在增长

Elasticsearch6.2服务器升配后的bug(避坑指南)

二、升级过程升配前

ES version:6.2.4

配置:32C64G

环境:阿里云ecs自建

gc:cms

jvm:30GB

升配后

ES version:6.2.4

配置:64C128G

环境:阿里云ecs自建

gc:cms

jvm:30GB

三、处理步骤

升配之后第二天首先应用表现出异常,写入ES的耗时变高了好十几倍,从40ms上升到600ms;升配导致集群变慢还是头一次遇到。通过对集群监控分析集群整体负载正常比升配之前有所下降,但是indexing的写入耗时监控确实比升配之前增长了很多。在ES的输出日志中出现了异常日志"stop throttling indexing: numMergesInFlight=8, maxNumMerges=9";

1.限流处理

当时怀疑应该是这个限流导致,ES的限流的主要目的是出于对集群的保护避免产生过多的段影响性能,说白了就是段的合并跟不上写入的速度,所以先来解决这个限流的问题,

由于配置文件没有配置最大线程数和最大的合并线程数,所以这两个值是用的是默认值

Spinning media has a harder time with concurrent I/O, so we need to decrease the number of threads that can concurrently access the disk per index. This setting will allow max_thread_count + 2 threads to operate on the disk at one time, so a setting of 1 will allow three threads.

index.merge.scheduler.max_thread_count
The maximum number of threads on a single shard that may be merging at once. Defaults to Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2)) which works well for a good solid-state-disk (SSD). If your index is on spinning platter drives instead, decrease this to 1.

Elasticsearch6.2服务器升配后的bug(避坑指南)

注意:在6.x版本之后已经取消了"indices.store.throttle.max_bytes_per_sec",所以现在只能通过调整max_thread_count,max_merge_count,默认max_thread_count最小是1最大是4,如果是机械盘推荐设1如果是ssd盘可以设成4或者更高,max_merge_count默认等于max_thread_count+5,也可以单独设置

可以通过命令查看默认的集群参数配置:

GET _settings/?include_defaults

可以配置到配置文件当中,也可以通过以下命令针对索引进行动态设置:

PUT index_name/_settings 
{
    "index.merge.scheduler.max_thread_count": 4,
    "index.merge.scheduler.max_merge_count": 20
}

2.mlock

通过修改线程数之后,限流的问题解决了,但是应用的写入rt耗时问题还是没有得到解决 。通过对"hot_threads"进行分析发现主要的耗时还是在merge和index两大块,并且通过os层面的监控发现mlock的占用内存一直在增长,启动参数配置文件设置在内存锁定“bootstrap.memory_lock: true”不明白为什么还会出现mlock的增长。

处理办法:

将硬件配置降回到32C64G问题解决,增加一副本来提升查询性能

3、总结

经过3天问题排查,网上也没有找到类似的案例,网上更多的还是限流相关的案例,总结下来应该还是当前版本对于大内存的处理相关的bug,在7.x版本没有出现类似的内存问题

到此这篇关于Elasticsearch6.2服务器升配后的bug的文章就介绍到这了,更多相关Elasticsearch6.2服务器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
Nginx搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx域名转发https访问的实现
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
Tomcat starup.bat 脚本实现开机自启动
Apr 20 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 23 #Servers
源码安装apache脚本部署过程详解
Sep 23 #Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 #Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Apache SkyWalking 监控 MySQL Server 实战解析
Sep 23 #Servers
服务器nginx权限被拒绝解决案例
Sep 23 #Servers
Fluentd搭建日志收集服务
Sep 23 #Servers
You might like
一步一步学习PHP(3) php 函数
2010/02/15 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
潜说js对象和数组
2011/05/25 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
Python装饰器原理与用法分析
2018/04/30 Python
Python数据结构之图的应用示例
2018/05/11 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python flask框架端口失效解决方案
2020/06/04 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
高中生自我评价个人范文
2013/11/09 职场文书
网站推广策划方案
2014/06/04 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏