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 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
Nginx同一个域名配置多个项目的实现方法
Mar 31 Servers
nginx前后端同域名配置的方法实现
Mar 31 Servers
nginx配置ssl实现https的方法示例
Mar 31 Servers
nginx location中多个if里面proxy_pass的方法
Mar 31 Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
解决Git推送错误non-fast-forward的方法
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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
document.compatMode介绍
2009/05/21 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
对python requests发送json格式数据的实例详解
2018/12/19 Python
python3.5安装python3-tk详解
2019/04/26 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
python实现的Iou与Giou代码
2020/01/18 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
实习护士自我鉴定
2013/10/13 职场文书
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
师德师风整改措施
2014/10/24 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python