首页 > 其他分享 >ES集群搜索稳定性保障

ES集群搜索稳定性保障

时间:2023-09-04 21:13:00浏览次数:43  
标签:文件 Term 倒排 doc 索引 搜索 集群 ES

如果将 Elasticsearch(ES)作为线上C端服务的查询引擎,那么 search query 的响应时间则至关重要。因为毕竟面向C端用户,如果一个搜索请求 1 秒内还未返回,那么用户将不可接受。

因此,C端服务对ES的性能稳定性做了许多工程上的优化,比如:

  1. 强制将索引的段文件设置为1,也即索引中只有一个段文件。
  2. 禁用swap,这在ES官方文档也有提及:https://www.elastic.co/guide/en/elasticsearch/reference/current/_memory_lock_check.html
    (这篇文章也提到了mlock)
  3. ES 节点启动时预热(预加载)

本文介绍,通过 memory lock 锁住“倒排索引”,避免搜索的核心数据结构被 swap 到磁盘上。
首先看背景:大神的文章:https://blog.mikemccandless.com/2010/07/lucenes-ram-usage-for-searching.html 讲了 lucene 在检索时,若“索引文件”被 swap 到磁盘上,则会存在严重的查询性能问题。
而我们可通过 linux 的 mlock 命令,(参考:https://man7.org/linux/man-pages/man2/mlock.2.html )将“倒排索引”文件 Lock 在内存,保障这些核心数据结构不被 swap out。
那 lock 哪些文件呢?主要有3类:

  1. .tim 文件。这是:词典/字典/Term:存储所有的Term的地方,另外在.tim文件中还存储了该term在.doc、.pos、.pay文件中的偏移量,我们可以快速定位到term关联的doc链表、Pos位置、Payload相关信息。

  2. .tip文件。字典索引/Term索引:为了加速查找Term在.tim中的位置,需要对字典做索引,Lucene使用FST作为Term的前缀索引,这个存储在.tip文件中。

  3. 倒排链:倒排链存放在.doc文件中,是一系列的有序doc的集合,另外为了快速做查找和遍历 .doc中还存储了跳表,方便快速定位到doc。

因此,在 ES索引构建成功后,通过 快照 将索引恢复(snapshot restore)到内存后,就可以将这3类文件通过:linux mlock 命令 lock 住,进一步保障在线C端查询服务依赖的ES 查询性能更稳定。

具体实现是:基于 ES 插件机制,开发一个 rest-handler 处理插件,该插件接收 mlock 命令,然后通过 JNA 方式调用 libc 函数库,从而执行 mlock命令,将此 ES节点 的倒排索引文件 lock 住。

标签:文件,Term,倒排,doc,索引,搜索,集群,ES
From: https://www.cnblogs.com/hapjin/p/17678086.html

相关文章

  • PXC集群升级方案
    方案概述客户环境需要将主备库的PXC版本一致,因此备库需要从5.7.24升级到5.7.28。PXC为rpm包安装,采用滚动升级的方式操作。实施步骤1、停止一个节点的数据库systemctlstopmysql2、删除该节点的pxc软件yumremove-ypercona-xtrabackup*Percona-XtraDB-Cluster*3、安装新版本软件......
  • Educational Codeforces Round 154 (Rated for Div. 2)
    EducationalCodeforcesRound154(RatedforDiv.2)比赛链接我都快忘了还有这一场比赛,今天打开cf看见这场比赛正好有时间就补了!!!2023.9.3也许是出去玩了一下午脑子不够用了??怎么现在读题都有一点读不懂了!!!2023.9.4我靠这场我怎么感觉没什么思路呢????A题PrimeDeletion题目链接......
  • Proj CDeepFuzz Paper Reading: DeepTest: automated testing of deep-neural-network
    Abstract本文:DeepTestTask:asystematictestingtoolforDNN-drivenvehiclesMethod:generatedtestcaseswithreal-worldchangeslikerain,fog,lightingconditions,etc.maxthenumberofactivatedneuronsGithub:https://github.com/ARiSE-Lab/deepTes......
  • accesskey_tools阿里云运维工具:自动化运维的利器
    一、简介:accesskey_tools是一款强大的云计算运维工具,它为云计算环境提供了自动化运维的解决方案。本文将为您介绍accesskey_tools的功能和用途,重点关注其自动创建ECS服务器、批量执行命令以及执行计划任务命令等自动化运维特性。二、优点:在不登录云平台的情况下,通过AccessKeyID和A......
  • ABAP 实现AES加密
    1.Github下载工具类https://github.com/Sumu-Ning/AES,利用abapGit上传至SAP系统2.AES加密需要四个参数①密钥②加密模式③字节填充模式④偏移量3.将明文转XSTRING,密钥BASE64解码,调用zcl_aes_utility=>encrypt_xstring方法METHODaes_encrypt.DATA:lv_content_xstrT......
  • avue表单组件后台拖拉拽框架avue-form-design在移动端vant框架与uniapp框架下的动态渲
    avue表单组件后台拖拉拽框架avue-form-design:https://github.com/sscfaith/avue-form-designavue表单组件后台拖拉拽框架avue-form-design在移动端vant框架与uniapp框架下的动态渲染转换适配待补充......
  • 【python自动化】pytest系列(下)
    pytest系列文章一共有四篇,本文为第三篇。公众号:梦无矶的测试开发之路,回复pytest可以领取对应资料本章知识点文章目录Pytest之fixture(1)fixture实现前/后置(2)fixture数据传递(3)fixture全局共享机制conftest.py(4)fixture嵌套Pytest之fixture示列代码使用装饰器的方式,scope参数是代表指......
  • 【python自动化】pytest系列(完结)
    pytest系列文章一共有四篇,本文为第四篇完结篇。应各位小伙伴留言,希望可以把这几篇pytest文章进行汇总。公众号:梦无矶的测试开发之路,回复pytest可以领取对应汇总资料本章知识点文章目录Pytest高阶用法(1)参数化(2)pytest.ini①marks标记②addopts配置(3)pytest.mark.相关1、直接跳过执......
  • 京东搜索EE链路演进
    导读搜索系统中容易存在头部效应,中长尾的优质商品较难获得充分的展示机会,如何破除系统的马太效应,提升展示结果的丰富性与多样性,助力中长尾商品成长是电商平台搜索系统的一个重要课题。其中,搜索EE系统在保持排序结果基本稳定的基础上,通过将优质中长尾商品穿插至排序结果中将优质商......
  • Proj CDeepFuzz Paper Reading: DeepGauge: multi-granularity testing criteria for
    Abstract本文:DeepGaugeTask:providemulti-granularitytestingcriteriaforDLsystemsMethod:multi-granularitytestingcriteriaforDLsystems:1.k-multisectionNeuronCoverage2.NeuronBoundaryCoverage3.StrongNeuronActivationCoverage4.Top-kN......