ELK中segemntmerge操作对写入性能的影响以及控制策略和优化方法

背景:数据进入到Elasticsearch当中之后,如何才能让数据被更快的检索使用,用一句话概括就是“开新文件”,但是每一秒都在打开新文件,一天有86400秒,设想一下,每次请求都要扫描86400个文件,这个性能肯定好不了。

归并线程

segment归并的过程,需要先读取segment,归并计算,再写一遍segment,最后刷到磁盘。这是一个非常消耗磁盘和IO的任务,所以我们需要对归并线程进行限速,默认配置是20MB,这对于写入量大,磁盘转速高,这个配置明显是过低的,所以我们需要提高限速。

# curl -XPuT http://127.0.0.1:9200/cluster/settings -d'
"persistent":{
"indices.store.throttle.maxbytes per sec":"100mb"

归并策略

归并线程是按照一定的运行策略来挑选segment 进行归并的主要为以下几条:

  • index.merge.policy.floor_segment 默认 2MB,小于这个大小的 segment,优先被归并
  • index.merge.policy.max merge at once 默认一次最多归并10个segment。
  • index.merge.policy.max merge _at once_explicit 默认 forcemerge 时一次最多归并 30个segment.
  • index.merge.policy.max_merged segment默认5 GB,大于这个大小的segment,不用参与归并。optimize 除外。

shard的allocate控制

以下几种情况会触发分配动作:

  • 新索引生成
  • 索引的删除。
  • 新增副本分片
  • 节点增减引发的数据均衡。

Elasticsearch 提供了一系列参数详细控制这部分逻辑:

  • cluster.routing.allocation.enable 参数用来控制允许分配哪种分片。默认是 all。可选项还包括 primaries和new_primaries。none 则彻底拒绝分片。
  • cluster.routing.allocation.allow rebalance 参数用来控制什么时候允许数据均衡。默认是indicesall active,即要求所有分片都正常启动成功以后,才可以进行数据均衡操作,否则的话,在集群重启阶段,会浪费太多流量了。
  • cluster.routing.allocation.cluster concurrent rebalance参数用来控制集群内同时运行的数据均衡任务个数。默认是2个。如果有节点增减,且集群负载压力不高的时候可以适当加大。
  • cluster.routing.allocation.node initial primaries recoveries参数用来控制节点重启时允许同时恢复几个主分片。默认是4个。如果节点是多磁盘,且I0压力不大,可以适当加大。
  • cluster.routing.allocation.node concurrent recoveries参数用来控制节点除了主分片重启恢复以外其他情况下,允许同时运行的数据恢复任务。默认是2个。所以,节点重启时可以看到主分片迅速恢复完成,副本分片的恢复却很慢。除了副本分片本身数据要通过网络复制以外,并发线程本身也减少了一半。当然,主分片一定是本地恢复,副本分片却需要走网络,带宽是有限的。
  • indices.recovery.concurrent streams参数用来控制节点从网络复制恢复副本分片时的数据流个数。默认是3个。
  • indices.recovery.max_bytes_per _sec参数用来控制节点恢复时的速率。默认是 40MB。也可根据上面配置加大

分片分配控制策略

        磁盘限额--为了保护节点数据安全,Elasticsearch会定时(cluster.info.update.interval,默认 30秒)检查一下各节点的数据目录磁盘使用情况。

        在达到clusterrouting.allocation.disk.watermark.low(默认85%)的时候,新索引分片就不会再分配到这个节点上了。在达到 cluster.routing.allocation.disk.watermark.high(默认 90%)的时候,就会触发该节点现存分片的数据均衡,把数据挪到其他节点上去。这两个值不但可以写百分比,还可以写具体的字节数。出于成本考虑,对磁盘使用率有一定的要求,需要适当抬高这个配置:

# curl-XPuT localhost:9200/cluster/settings -d'{"transient":{
"cluster,routing.allocation.disk.watermark.low""85%"
"cluster.routing.allocation.disk.watermark.high":"10qb"
"cluster.info.update.interval":"1m"

        热索引分片不均--默认情况下,Elasticsearch集群的数据均衡策略是以各节点的分片总数(indicesall active)作为基准的。这对于搜索服务来说无疑是均衡搜索压力提高性能的好办法。但是对于ELKstack场景,一般压力集中在新索引的数据写入方面。正常运行的时候,也没有问题。但是当集群扩容时,新加入集群的节点,分片总数远远低于其他节点。这时候如果有新索引创建,Elasticsearch的默认策略会导致新索引的所有主分片几乎全分配在这台新节点上。整个集群的写人压力,压在一个节点上,结果很可能是这个节点直接被压死,集群出现异常。所以,对于ELKstack场景,建议预先计算好索引的分片数后,配置好单节点分片的限额。比如,一个5节点的集群,索引主分片10个,副本1份。则平均下来每个节点应该有4个分片,那么就配置:

#curl-s-XPuT http://127.0.0.1:9200/logstash-2015.05.08/ settings -d '{"index":{"routing.allocation.total shards per node" :"5"


注意,这里配置的是5而不是4。因为我们需要预防有机器故障,分片发生迁移的情况如果写的是4,那么分片迁移会失败。

  • cluster.routing.allocation.balance.shard 节点上分配分片的权重,默认值为 0.45。数值越大越倾向于在节点层面均衡分片。
  • cluster.routing.allocation.balance.index每个索引往单个节点上分配分片的权重,默认值为0.55。数值越大越倾向于在索引层面均衡分片。
  • cluster.routing.allocation.balance.threshold 大于阈值则触发均衡操作。默认值为1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word表格跨页后自动生成的顶部横线【去除方法】

Hello World! Its been a long time. 这一年重心放在了科研、做事、追寻新的经历上,事有正事、琐事、幸事、哀事,内心与认知成长了一些,思想成熟了几分,技艺也有若干收获。不管怎样,来打个卡吧,纪念一下&…

Web前端高级工程师培训:使用 Node.js 构建一个 Web 服务端程序(3)

11、HTTP 协议 11-1、协议的定义 HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通…

Tailwind Starter Kit 一款极简的前端快速启动模板

Tailwind Starter Kit 是基于TailwindCSS实现的一款开源的、使用简单的极简模板扩展。会用Tailwincss就可以快速入手使用。Tailwind Starter Kit 是免费开源的。它不会在原始的TailwindCSS框架中更改或添加任何CSS。它具有多个HTML元素,并附带了ReactJS、Vue和Angul…

Docker安装Mysql5.7,解决无法访问DockerHub问题

Docker安装Mysql5.7,解决无法访问DockerHub问题 简介 Docker Hub 无法访问,应用安装失败,镜像拉取超时的解决方案。 摘要 : 当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的…

使用爬虫爬取Python中文开发者社区基础教程的数据

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

微信小程序文本收起展开

这里写自定义目录标题 微信小程序文本收起展开常见问题的梯形背景框 微信小程序文本收起展开 参考 https://juejin.cn/post/6963904955262435336 <!-- 常见问题解答 --><view classcontentBottom><view classBottomFirst><text id0 data-id0 class&quo…

python + mitmproxy 爬手机app (1)

起因&#xff0c; 目的: 想爬手机上某鱼。 mitmproxy 简介: 一句话: mitmproxy 就是中间人攻击. (只不过&#xff0c; 你安装&#xff0c;就代表你愿意承担风险。)源码&#xff1a;https://github.com/mitmproxy/mitmproxy文档: https://mitmproxy.org/ 安装过程: 见聊天记…

eCAP超声波测距-ePWM电机调速

目录 eCAP超声波测距 整体框架 关键模块 实验效果 PWM电机调速 DRV8833基本介绍 整体框架 eCAP超声波测距 本实验所用的超声波HC-SR04模块如下图所示&#xff0c;左边为正面图&#xff0c;右边为反面图。 HC-SR04基本工作原理&#xff1a; &#xff08;1&#xff09;采…

spring源码中的,函数式接口,注解@FunctionalInterface

调用方 /org/springframework/beans/factory/support/AbstractBeanFactory.java:333sharedInstance getSingleton(beanName, () -> {try {return createBean(beanName, mbd, args);}catch (BeansException ex) {// Explicitly remove instance from singleton cache: It mi…

Kafka之消费者客户端

1、历史上的二个版本 与生产者客户端一样&#xff0c;在Kafka的发展过程当中&#xff0c;消费者客户端主要有两个大的版本&#xff1a; 旧消费者客户端&#xff08;Old Consumer&#xff09;&#xff1a;基于Scala语言开发的版本&#xff0c;又称为Scala消费者客户端。新消费…

rpm 命令

rpm&#xff08;Red Hat Package Manager&#xff09;是 Red Hat Linux 及其衍生发行版&#xff08;如 CentOS、Fedora&#xff09;中用于管理软件包的系统。它允许用户安装、卸载、升级、查询和验证软件包。 一、安装软件包 &#xff08;1&#xff09;安装一个 RPM 软件包&a…

高并发下如何保证接口的幂等性?

前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。 不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次…

十二、【智能体】深入剖析:大模型节点的全面解读,举例说明,教你如何在扣子中嵌入代码

大模型节点 大模型节点主要分为5部分&#xff1a; 处理类型 单次批处理 模型类型&#xff1a;目前可以选择的模型有 豆包、通义千问、智谱、MinMax和Kimi输入:此时的参数可以被下面的提示词所用提示词&#xff1a;给大模型使用的提示词输出&#xff1a;经过此大模型处理后的输…

Vehicle Spy3.9如何新建工程—总览

1&#xff1a;写作目的 学习和精通SPY的使用&#xff0c;对于spy&#xff0c;目前主要是通用系用的比较多&#xff0c;本身spy的生产厂家英特佩斯也是美国的公司&#xff0c;除了软件自带教程。中文网上很少能找到相关的中文教程。 故写下这篇文章&#xff0c;帮助自己和大家…

Ubuntu(22.04)本地部署Appsmith

Ubuntu&#xff08;22.04&#xff09;安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台&#xff0c;旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件&#xff0c;Appsmith 让用户无需编写大量代码即可创建…

软件工程的学习之详细绪论

软件的定义 软件是程序和所有使程序正确运行所需要的相关文档和配置信息。 Software Program Data Document 一、软件危机&#xff1a; 软件开发和维护过程中遇到的一系列严重问题。 二、具体表现&#xff1a; 1、产品不符合用户的实际需要&#xff1b; 2、软件开发生产率…

Sigrity 共模电感的S-parameter仿真数据导入

下载S4P参数 https://ds.murata.co.jp/simsurfing/cmcc.html?partnumbers%5B%22DLW32MH101XT2%22%5D&oripartnumbers%5B%22DLW32MH101XT2L%22%5D&rgearjomoqke&rgearinfocom&md51729525489334# 下载S4P参数&#xff1b; DLW32MH101XT2.s4p Sigrity 使用-dif…

Mac电脑:资源库Library里找不到WebServer问题的解决

今天看到一本书里写到Windows电脑自带IIS Web服务器&#xff0c;好奇了一下下&#xff0c;mac电脑自带的又是什么服务器呢&#xff1f;经查询&#xff0c;原来是Apache服务器&#xff0c;这个名字我很熟悉。只是如何设置呢&#xff1f;我从来没用过&#xff0c;于是试验了一番。…

如何看待AI技术的应用前景?

人工智能&#xff1a;引领未来的变革力量 在当今快速变化的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;作为一项前沿技术&#xff0c;已然成为推动全球各行各业变革的核心驱动力。随着人工智能技术的不断发展&#xff0c;其广泛的应用前景和深远的影响力&#xf…

Lua环境安装

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua是一种轻量级、小巧且易于嵌入应用程序的脚本语言&#xff0c;广泛用于游戏开发、Web开发、自动化脚本等领域。本文将详细介绍如何在不同操作系统上安装L…