当前位置: 首页 > news >正文

大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异

最近有客户在使用 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

about easysearch

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

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

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

http://www.lryc.cn/news/249063.html

相关文章:

  • 东明石化集团领导团队参访震坤行工业超市
  • Java常见的面试题(很基础那种)
  • MySQL处理并发访问和高负载的关键技术和策略
  • 软件测试jmeter基本使用
  • 一文讲透Python函数中的局部变量和全局变量
  • 【LeetCode】每日一题 2023_11_23 HTML 实体解析器(调库/打工)
  • Flask SocketIO 实现动态绘图
  • 软著项目推荐 深度学习 植物识别算法系统
  • 自动驾驶HWP 功能规范
  • Ubuntu 环境下 NFS 服务安装及配置使用
  • vue.js如何根据后台返回来的图片url进行图片下载
  • 获取WordPress分类链接
  • <Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 5》(9)
  • Anthropic推出Claude 2.1聊天机器人;使用AI工具写作:挑战与策略
  • 2023-11-30 LeetCode每日一题(确定两个字符串是否接近)
  • 进程间通信基础知识【Linux】——上篇
  • OpenSSH(CVE-2023-38408)OpenSsh9.5一键升级修复
  • 10.30 作业 C++
  • Python开发运维:PyMongo 连接操作 MongoDB
  • 【Github】本地管理github分支
  • Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap
  • Python正则表达式:match()和search()函数全面解读
  • AIGC ChatGPT4总结Linux Shell命令集合
  • 力扣labuladong——一刷day61
  • nacos配置变更导致logback日志异常
  • 【spring(五)】SpringMvc总结 SSM整合流程
  • 1、windows10系统下Qt5.12.0与卸载
  • WebGL/threeJS面试题扫描与总结
  • Qt connect()方法Qt::ConnectionType
  • HIVE SQL时间函数