广告位联系
返回顶部
分享到

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

服务器其他 来源:互联网 作者:佚名 发布时间:2022-09-23 21:22:13 人浏览
摘要

本篇文章记录最近一次生产服务器硬件升级之后引起集群不稳定的现象,希望可以帮到有其它人避免采坑。 一、问题描述 升级后出现的异常如下: 出现限流日志:stop throttling indexing

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

一、问题描述

升级后出现的异常如下:

出现限流日志: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,也可以单独设置

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

1

GET _settings/?include_defaults

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

1

2

3

4

5

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版本没有出现类似的内存问题


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.cnblogs.com/chenmh/p/16718646.html
相关文章
  • 网站https访问是443端口还是433端口

    网站https访问是443端口还是433端口
    https默认端口号是443 https是以安全为目标的http通道,简单讲是http的安全,即http下加入SSL层,https的安全基础是SSL,因此加密权的详细内容就
  • 关于HTTPS端口443的技术介绍(什么是443端口)
    443端口是用来保证客户和服务器之间的通信安全。 本文将重点介绍HTTPS 443端口,它是如何工作的,它保护什么,以及为什么我们需要它。
  • ElasticSearch事件查询语言EQL操作
    EQL的全名是Event Query Language (EQL)。事件查询语言(EQL)是一种用于基于事件的时间序列数据(例如日志,指标和跟踪)的查询语言。在Elast
  • aarch64服务器部署mysql的流程介绍

    aarch64服务器部署mysql的流程介绍
    aarch64服务器-部署mysql aarch64服务器-部署nacos 1、创建工作目录 1 mkdir -p /apps/mysql/{mydir,datadir,conf,source} 2、编写docker-compose.yaml 1 2 3 4 5 6 7 8 9 1
  • 解决Navicat连接服务器不成功的问题(Access denied

    解决Navicat连接服务器不成功的问题(Access denied
    出现的原因一般是服务器的root用户没有开启访问权限,一般来说值允许本地的访问。 解决方法: 一:第一种方法 1、首先打开xshell连接服务
  • Elasticsearch6.2服务器升配后的bug(避坑指南)

    Elasticsearch6.2服务器升配后的bug(避坑指南)
    本篇文章记录最近一次生产服务器硬件升级之后引起集群不稳定的现象,希望可以帮到有其它人避免采坑。 一、问题描述 升级后出现的异常
  • 使用Ubuntu搭建DNS服务器

    使用Ubuntu搭建DNS服务器
    一、重点说明/etc/bind/named.conf.options配置文件 在进行bind9服务器配置时,/etc/bind/named.conf.options是十分关键的配置文件,它决定着DNS服务器是否
  • Flink 侧流输出源码示例介绍

    Flink 侧流输出源码示例介绍
    Flink 的 side output 为我们提供了侧流(分流)输出的功能,根据条件可以把一条流分为多个不同的流,之后做不同的处理逻辑,下面就来看下
  • Fluentd搭建日志收集服务介绍
    公司需要搭建一个日志收集服务器,用于将公司的项目日志汇总到一台服务器上面,方便查看和减轻各项目服务器压力。但是由于目前资源
  • 游戏服务器中的Netty应用以及源码剖析

    游戏服务器中的Netty应用以及源码剖析
    一、Reactor模式和Netty线程模型 最近因为工作需要,学习了一段时间Netty的源码,并做了一个简单的分享,研究还不是特别深入,继续努力。
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计