最近有客户在使用 Elasticsearch 搜索服务时发现集群有掉节点,并且有 master 收集节点信息超时的日志,节点的负载也很高,不只是 data 节点,master 和协调节点的 cpu 使用率都很高,看现象集群似乎遇到了性能瓶颈。

查看了 Hot_threads, 发现大量线程被权限验证相关的类和方法占用,主要在 RBACEngine 和 AuthorizationService 两个类。并且不止协调节点和数据节点,master 节点居然也有那么多权限验证的操作?

于是怀疑是不是对权限验证的使用方式不对,在 github 上搜了下,果然发现有人遇到和我们非常类似的场景。

Improve Authorization performance in clusters with a large number of indices #67987

提到有些个用户在达到数千或上万个索引的场景下,在启用安全验证进行写入数据时,服务端几乎会耗费掉所有 CPU 时间在 transport_worker 线程上进行权限验证,从而阻塞其他传入请求,

导致集群的吞吐量下降,下降的程度似乎是 2 倍到 3 倍。

有人建议升级到 7.16 或更高版本来解决这个问题。

为了确认下我们的产品是否有类似现象,我对两个服务进行了测试对比,由于硬件资源有限,只对单个节点进行了写入吞吐的压测。

测试条件:

  • -Xms3g -Xmx3g
  • 16 逻辑核 CPU
  • 启用 security 验证
  • 预先创建了 1000 个索引
  • 每个索引 1 个 shard,3 个别名

采用相同的 loadgen 脚本进行压测, 压测命令:./loadgen-linux-amd64 -config loadgen-index_0.yml -d 120 -c 10

即每秒 10 个并发请求,持续压测 120 秒,每个 bulk 请求包含写入 5000 个 doc,对单个索引进行压测。

Easysearch 1.0 写入了 6900000 条。



对比搜索服务 7.3.2 写入了 5865000 条。



压测完毕,显示 Easysearch 的吞吐大约高出了 17%。

测试时观察 Hot_threads,Easysearch 除了 lucene 的写入和 merge 线程,未发现权限验证相关热点线程,表明了启用安全验证不会对 Easysearch 的写入造成性能影响。

关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。

官网文档:https://www.infinilabs.com/docs/latest/easysearch

下载地址:https://www.infinilabs.com/download

大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异的更多相关文章

  1. 亿级流量场景下,大型缓存架构设计实现【1】---redis篇

    *****************开篇介绍**************** -------------------------------------------------------------- ...

  2. ADO.NET Entity Framework 在哪些场景下使用?

    在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...

  3. ElasticSearch概述及Linux下的单机ElasticSearch安装

    原文链接:http://blog.csdn.net/w12345_ww/article/details/52182264 这两天在项目中要涉及到ElasticSearch的使用,就上网去搜索了一些这方 ...

  4. 美团在O2O场景下的广告营销

    美团作为中国最大的在线本地生活服务平台,覆盖了餐饮.酒店.旅行.休闲娱乐.外卖配送等方方面面生活场景,连接了数亿用户和数百万商户.如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升 ...

  5. Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%。再往后,每提高0.1%,优化难度成指数级增长了。哪怕是千分之一,也直接影响用户体验,影响每天上万张机票的销售额。 在高并发场景下,提供了保证线程安全的对象、方法。比如经典的ConcurrentHashMap,它比起HashMap,有更小粒度的锁,并发读写性能更好。线程安全的StringBuilder取代S

    Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%.再往后,每提高0.1%,优化难度成指数级增长了.哪怕是千分之一,也直接影响用户体验,影响每天上万张机 ...

  6. 10.多shard场景下relevence score可能不准确

    主要知识点 多shard场景下relevence score可能不准确的原因 多shard场景下relevence score可能不准确解决方式     一.多shard场景下relevance sc ...

  7. [转帖]etcd 在超大规模数据场景下的性能优化

    etcd 在超大规模数据场景下的性能优化   阿里系统软件技术 2019-05-27 09:13:17 本文共5419个字,预计阅读需要14分钟. http://www.itpub.net/2019/ ...

  8. etcd 在超大规模数据场景下的性能优化

    作者 | 阿里云智能事业部高级开发工程师 陈星宇(宇慕) 概述 etcd是一个开源的分布式的kv存储系统, 最近刚被cncf列为沙箱孵化项目.etcd的应用场景很广,很多地方都用到了它,例如kuber ...

  9. 难道主键除了自增就是GUID?支持k8s等分布式场景下的id生成器了解下

    背景 主键(Primary Key),用于唯一标识表中的每一条数据.所以,一个合格的主键的最基本要求应该是唯一性. 那怎么保证唯一呢?相信绝大部分开发者在刚入行的时候选择的都是数据库的自增id,因为这 ...

  10. 面试官:如何在分布式场景下生成全局唯一 ID?

    在分布式系统中,有一些场景需要使用全局唯一 ID ,可以和业务场景有关,比如支付流水号,也可以和业务场景无关,比如分库分表后需要有一个全局唯一 ID,或者用作事务版本号.分布式链路追踪等等,好的全局唯 ...

随机推荐

  1. Exception in thread "main" java.util.NoSuchElementException

    Exception in thread "main" java.util.NoSuchElementException 用了两个scanner的时候,执行程序发生报错:Except ...

  2. DTCC 2020 | 阿里云赵殿奎:PolarDB的Oracle平滑迁移之路

    简介: Oracle兼容性是业务客户从Oracle生态迁移到PolarDB生态的第一步也是至关重要的一步,PolarDB通过不断沉淀支持大量实际业务的真实Oracle兼容性功能,确保客户业务可以真正做 ...

  3. 有赞 Flink 实时任务资源优化探索与实践

    简介: 目前有赞实时计算平台对于 Flink 任务资源优化探索已经走出第一步. 随着 Flink K8s 化以及实时集群迁移完成,有赞越来越多的 Flink 实时任务运行在 K8s 集群上,Flink ...

  4. Yurt-Tunnel 详解|如何解决 K8s 在云边协同下的运维监控挑战

    简介: 伴随着 5G.IoT 等技术的快速发展,边缘计算被越来越广泛地应用于电信.媒体.运输.物流.农业.零售等行业和场景中,成为解决这些领域数据传输效率的关键方式.与此同时,边缘计算形态.规模.复杂 ...

  5. [FE] G2Plot 在 Vue 中使用 CDN 方式避免构建时增大 js 体积

    使用 npm.yarn 方式安装的包,虽方便使用,但是会极大增加 vendor.xx.js 体积,拖慢网站运行速度. 以 G2Plot 为例,实际在 build 构建时,会下载一些额外字体到 vend ...

  6. 每天5分钟复习OpenStack(十三)存储缓存技术Bcache

    Ceph作为一个分布式存储,在项目中常见的形态有两者,一种是采用 SSD 或NVME 磁盘做Ceph的日志盘,使用SATA磁盘来做数据盘.这样的好处是比较经济实惠.另一种则是全部采用 SSD 或NVM ...

  7. WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

    本文告诉大家如何在 WPF 里,通过 GifBitmapDecoder 调用 WIC 层来解析 GIF 图片,然后采用动画的方式进行播放 在上一篇博客告诉大家,可以通过 GifBitmapDecode ...

  8. aliyun全站DCDN刷新--Django

    1.编写原因: 由于登录到阿里云DCDN,需要登录加打开各种页面,导致推送一次感觉非常麻烦,所以编写(网上以有很多可以借鉴) 2.基础环境 # 所需模块 pip install aliyun-pyth ...

  9. go语言package使用

    近期接触go感觉package包之间引用很麻烦,很绕圈子.下面一起理一理这个package咋用 关于package: 1.不限于一个文件,可以多个文件组成一个package 2.不要求package的 ...

  10. 如何将本地项目第一次同步到gitee远程

    一,Gitee账号的注册/登录 在gitee登录入口输入相关信息进行注册登录https://gitee.com/signup#lang=zh-CN 二,本地安装git客户端并配置用户信息 1.Git ...