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

 更新时间:2022年09月22日 11:43:32   作者:pursuer.chen  
这篇文章主要介绍了Elasticsearch6.2服务器升配后的bug问题及解决方法,可以帮助有其他人避坑,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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

一、问题描述

升级后出现的异常如下:

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

二、升级过程升配前

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.

注意:在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服务器内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Node启动https服务器的教程

    Node启动https服务器的教程

    这篇文章主要介绍了Node启动https服务器的教程,有node原生版本,express 版本,koa版本,具体各个版本的代码讲解大家参考下本文
    2018-03-03
  • vscode内网访问服务器的方法

    vscode内网访问服务器的方法

    这篇文章主要介绍了vscode内网访问服务器的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 深入理解微服务中的高并发、高性能、高可用及处理方式

    深入理解微服务中的高并发、高性能、高可用及处理方式

    这篇文章主要介绍了深入理解微服务中的高并发、高性能、高可用及处理方式,系统在巨大的流量洪峰(即指高并发场景)冲击下,依然能高效、稳定、正常地(即指高性能、高可用)对外提供服务,这是系统设计的主要目标之一,需要的朋友可以参考下
    2023-10-10
  • 妙用.htaccess隐藏网页文件扩展名

    妙用.htaccess隐藏网页文件扩展名

    我总固执地认为网页链接后拖着一个.php让人看着心烦,一心想要找到办法把它给去掉。虽然网上有对WordPress、Discuz等系统关于这方面的介绍,但是对于自己设计的网站就不太好使了
    2013-12-12
  • 一文概括6种负载均衡技术的实现方式(小结)

    一文概括6种负载均衡技术的实现方式(小结)

    这篇文章主要介绍了一文概括6种负载均衡技术的实现方式(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 解决FileZilla_Server:425 Can''t open data connection 问题详解

    解决FileZilla_Server:425 Can''t open data connection 问题详解

    在腾讯云服务器上安装FileZilla Server时出现425 Can't open data connection客户端无法获取目录列表的问题,下面就是解决这个问题的方法
    2018-10-10
  • SSH证书登录方法详细教程

    SSH证书登录方法详细教程

    SSH是服务器登录工具,密码登录和密钥登录,都有各自的缺点。SSH还有第三种登录方法,那就是证书登录。很多情况下,它是更合理、更安全的登录方法,本文介绍证书登录的方法,需要的朋友可以参考下
    2022-12-12
  • 32位操作系统认出超出4G内存的方法

    32位操作系统认出超出4G内存的方法

    编辑操作系统安装盘下boot.ini文件(隐藏文件),在[operating systems]的行后,加入/PAE,保存,重启系统后,就会认出超出4G的内存。
    2009-06-06
  • phpnow重新安装mysql数据库的方法

    phpnow重新安装mysql数据库的方法

    这篇文章主要介绍了phpnow重新安装mysql数据库的方法,phpnow是一个本地PHP开发环境,简单易用,需要的朋友可以参考下
    2014-05-05
  • Nodejs创建TCP服务器 - king0222

    Nodejs创建TCP服务器 - king0222

    这篇文章主要介绍了Nodejs创建TCP服务器 - king0222的相关资料,需要的朋友可以参考下
    2015-09-09

最新评论

?


http://www.vxiaotou.com