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常用命令放入shell脚本详解
Mar 31 Servers
Nginx域名转发使用场景代码实例
Mar 31 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
nginx配置限速限流基于内置模块
May 02 Servers
详解Nginx的超时keeplive_timeout配置步骤
May 25 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 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创建基本身份认证站点的方法详解
2013/06/08 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
JavaScript OOP面向对象介绍
2010/12/02 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
Python类的专用方法实例分析
2015/01/09 Python
python多线程用法实例详解
2015/01/15 Python
Python反转序列的方法实例分析
2018/03/21 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
python中re模块知识点总结
2021/01/17 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
给同学的道歉信
2014/01/16 职场文书