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配置ssl实现https的方法示例
Mar 31 Servers
nginx proxy_cache 缓存配置详解
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
Nginx 匹配方式
May 15 Servers
Nginx本地配置SSL访问的实例教程
May 30 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
设置IIS Express并发数
Jul 07 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python学习之Django的管理界面代码示例
2018/02/10 Python
python字符串反转的四种方法详解
2019/12/02 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
HTML5文档结构标签
2017/04/21 HTML / CSS
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
angular异步验证器防抖实例详解
2022/03/31 Javascript
对讲机知识
2022/04/07 无线电