写点什么

Easysearch 2.0.0 性能测试

作者:极限实验室
  • 2025-12-07
    北京
  • 本文字数:3176 字

    阅读完需:约 10 分钟

Easysearch 2.0.0 性能测试

概述

Easysearch 2.0.0 正式版带来了显著的性能提升和优化改进。通过与上一个稳定版本 1.15.6 的全面对比测试,我们使用 esrally 基准测试工具在 append-no-conflicts 场景下进行了深入的性能评估。测试结果表明,2.0.0 版本在索引性能、查询延迟、内存管理等核心指标上都实现了突破性改进。

核心性能提升

1. 索引性能更加稳定

写入效率提升 12.81%


Easysearch 2.0.0 索引性能表现更加稳定:


  • 累计索引 CPU 时间(所有主分片):从 225.1 分钟缩短至 196.3 分钟,减少 28.8 分钟(-12.81%

  • 索引吞吐量

  • 平均吞吐量从 180,868 docs/s 提升至 190,712 docs/s(+5.44%

  • 最大吞吐量从 198,184 docs/s 提升至 220,460 docs/s(+11.24%

  • 最小吞吐量从 164,263 docs/s 提升至 178,961 docs/s(+8.95%


累计索引 CPU 时间的减少,表明 2.0.0 版本在索引操作上更加高效,CPU 利用率更优。这意味着在相同硬件条件下,Easysearch 2.0.0 能够更快地完成数据摄入任务,对于需要处理大规模数据写入的场景具有重要意义。



2. Refresh 和 Flush 耗时缩短

Refresh 和 Flush 性能大幅改善


在 Elasticsearch/Easysearch 中,Refresh 和 Flush 操作对写入性能有直接影响。2.0.0 版本在这两个关键操作上实现了重大优化:

Refresh 性能提升 54.46%

  • 累计刷新时间:从 9.14 分钟降至 4.16 分钟

  • 中位刷新时间:减少 61.86%(从 0.133 分钟降至 0.051 分钟)

  • 最大刷新时间:减少 65.62%(从 1.12 分钟降至 0.39 分钟)

Flush 性能提升 40%

  • 累计刷盘时间:从 12.57 分钟降至 7.54 分钟

  • 中位刷盘时间:减少 57.57%

  • 最大刷盘时间:减少 31.93%



这些优化使得 Easysearch 2.0.0 能够更高效地将数据持久化到磁盘,同时减少对写入操作的阻塞。

3. 垃圾回收(GC)性能优化

GC 效率显著提升


  • Young GC 次数:从 525 次降至 426 次,减少 18.86%

  • Young GC 时间:从 16.547 秒降至 15.985 秒,减少 3.40%

  • Old GC:两个版本均无 Old GC 发生,内存管理健康


更少的 GC 次数意味着:


  • 应用程序 STW(Stop-The-World)暂停更少

  • 更稳定的查询响应时间

  • 更好的系统吞吐量

查询性能提升

1. 基础查询延迟降低

多类型查询性能全面提升




2. 排序查询性能飞跃

时间戳排序查询优化高达 97%


Easysearch 2.0.0 在排序查询场景下实现了令人瞩目的性能突破:

降序排序(desc_sort_timestamp)

  • 50 分位延迟:从 516.07ms 降至 98.89ms(-80.84%

  • 90 分位延迟:从 544.84ms 降至 123.59ms(-77.32%

  • 99 分位延迟:从 603.14ms 降至 139.93ms(-76.80%

升序排序 + After 分页(asc_sort_with_after_timestamp)

  • 50 分位延迟:从 1272.58ms 降至 33.56ms(-97.36%

  • 90 分位延迟:从 1386.92ms 降至 37.25ms(-97.31%

  • 99 分位延迟:从 1474.98ms 降至 38.11ms(-97.42%


Force Merge 后的排序查询

在强制合并为单段后,排序查询性能更加出色:


降序排序(force-merge-1-seg)


  • 50 分位延迟:从 131,617ms 降至 115.01ms(-99.91%

  • 这一改进相当于从 2 分钟以上降至 0.1 秒!


升序 + After 分页(force-merge-1-seg)


  • 50 分位延迟:从 1387.01ms 降至 132.42ms(-90.45%

  • 90 分位延迟:从 1509.03ms 降至 159.05ms(-89.46%

3. 聚合查询性能提升

hourly_agg 聚合查询优化


  • 50 分位延迟:从 4192.57ms 降至 3866.07ms(-7.79%

  • 90 分位延迟:从 4303.51ms 降至 4053.80ms(-5.80%

  • 99 分位延迟:从 4475.32ms 降至 4269.91ms(-4.59%

4. Scroll 查询性能改进

大数据量遍历场景优化


  • 50 分位延迟:从 6511.65ms 降至 4623.87ms(-28.99%

  • 90 分位延迟:从 6881.70ms 降至 5972.79ms(-13.21%

  • 平均吞吐量:从 24.192 pages/s 提升至 24.485 pages/s(+1.21%



5. 高百分位延迟大幅改善

极端场景下的稳定性提升


在衡量系统稳定性的高百分位延迟指标上,2.0.0 版本表现卓越:



这意味着即使在最坏的情况下,2.0.0 版本也能提供更加稳定和可预测的性能表现。

范围查询性能提升

200s-in-range 和 400s-in-range 查询优化


  • 200s-in-range

  • 50 分位延迟降低 15.60%

  • 吞吐量提升 1.20%

  • 400s-in-range

  • 50 分位延迟降低 8.44%

  • 吞吐量提升 0.23%

存储优化

磁盘空间使用更高效


  • 存储大小:从 19.51 GB 降至 19.14 GB(-1.93%

  • 段数量:从 43 个增至 50 个(+16.28%)


虽然段数量略有增加,但总存储空间仍然减少,说明数据压缩和存储效率得到了提升。

Merge 策略调整

合并操作的权衡


需要注意的是,2.0.0 版本在 Merge 方面有以下变化:


  • Merge 次数从 184 次增至 192 次(+4.35%)

  • Merge 限流时间从 9.53 分钟增至 11.17 分钟(+17.20%


这是为了平衡写入性能和查询性能所做的策略调整。用户可以根据实际场景需求,通过以下参数进行优化:


{  "index.merge.scheduler.max_thread_count": "1",  "index.merge.policy.max_merged_segment": "5gb"}
复制代码

技术架构改进

1. 段数据结构优化

通过将段元数据从堆内存迁移到堆外内存,Easysearch 2.0.0 实现了:


  • 更低的 JVM 堆压力

  • 更少的 GC 频率

  • 更稳定的内存使用模式

  • 更好的大数据集支持能力

2. 查询缓存优化

排序查询性能的巨大提升表明 2.0.0 版本可能在以下方面进行了优化:


  • 改进的 Doc Values 访问机制

  • 优化的排序算法

  • 更高效的分页实现

  • 智能的查询结果缓存

3. I/O 优化

Refresh 和 Flush 时间的大幅减少说明:


  • 改进了磁盘 I/O 调度策略

  • 优化了文件系统操作

  • 可能引入了更高效的批量写入机制

适用场景

Easysearch 2.0.0 的性能提升使其在以下场景中表现更加出色:

1. 大规模日志与事件流处理

  • 更高的写入吞吐量(+11.24% 峰值)

  • 更低的索引延迟

  • 适合 APM、日志分析、安全监控等场景

2. 时序数据存储与分析

  • 时间戳排序查询性能提升高达 97%

  • 适合 IoT、监控指标、金融交易数据等场景

3. 全文搜索应用

  • 多类型查询延迟降低 10-30%

  • 高并发场景下更稳定的响应时间

  • 适合电商搜索、内容管理系统等场景

4. 实时分析与 Dashboard

  • 聚合查询性能提升 5-8%

  • 更低的极端延迟,用户体验更好

  • 适合实时报表、业务 BI 等场景

5. 大数据量遍历与导出

  • Scroll 查询延迟降低 29%

  • 适合数据迁移、全量导出等场景

升级建议

兼容性

Easysearch 2.0.0 与 1.15.6 在 API 层面保持兼容,但建议:


  1. 测试环境验证:先在测试环境进行充分验证

  2. 配置审查:检查 Merge 相关配置是否需要调整

  3. 监控指标:升级后密切关注 GC、内存、延迟等指标

  4. 滚动升级:生产环境建议采用滚动升级方式

性能测试环境

本次测试使用 esrally 基准测试工具,测试配置如下:


  • 测试场景:append-no-conflicts

  • 测试时间

  • Baseline (1.15.6): 2025-11-14

  • Contender (2.0.0): 2025-11-21

  • 部署方式:External(独立部署)

  • CPU 绑定:使用 taskset 绑定 Easysearch 进程 0 到 15 cpu

  • JVM 配置-Xms16g -Xmx16g

总结

Easysearch 2.0.0 版本在性能方面取得了全面提升:


  • 索引性能提升 12.81%

  • 查询延迟降低 10-97%(不同场景)

  • 内存使用优化 100%(堆内段数据)

  • GC 频率降低 18.86%

  • Refresh 性能提升 54.46%

  • Flush 性能提升 40%

  • 高百分位延迟改善 43-70%


这些改进使得 Easysearch 2.0.0 成为一个更加高效、稳定和可靠的搜索与分析引擎,特别适合处理大规模数据和实时查询场景。无论是日志分析、时序数据处理,还是全文搜索应用,2.0.0 版本都能提供更优秀的性能表现。


我们强烈建议用户升级到 Easysearch 2.0.0,以获得这些显著的性能提升和更好的使用体验。




关于 Easysearch



INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。


  • 官网: https://easysearch.cn

  • 文档: https://docs.infinilabs.com/easysearch/main


作者:张磊,极限科技(INFINI Labs)搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

原文:https://infinilabs.cn/blog/2025/easysearch-2.0.0-performance-improvements/

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

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

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

评论

发布
暂无评论
Easysearch 2.0.0 性能测试_性能测试_极限实验室_InfoQ写作社区