写点什么

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

作者:极限实验室
  • 2023-11-25
    广西
  • 本文字数:960 字

    阅读完需:约 3 分钟

大量索引场景下 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


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


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


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

发布于: 刚刚阅读数: 3
用户头像

简单、易用、极致、创新 2021-11-22 加入

极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

评论

发布
暂无评论
大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异_数据库_极限实验室_InfoQ写作社区