--- title: "Easysearch 2.0.0 性能测试" date: 2025-11-24 lastmod: 2025-11-24 description: "Easysearch 2.0.0 正式版性能全面提升:索引、查询及内存管理(GC)等核心性能均获显著优化。" tags: ["Easysearch", "performance"] summary: "概述 # 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 能够更快地完成数据摄入任务,对于需要处理大规模数据写入的场景具有重要意义。 Indexing Throughput (docs/s) - Higher is Better v1." --- ## 概述 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 能够更快地完成数据摄入任务,对于需要处理大规模数据写入的场景具有重要意义。

Indexing Throughput (docs/s) - Higher is Better

v1.15.6
180,868
v2.0.0
190,712
### 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%**

Cumulative Refresh Time (min) - Lower is Better

v1.15.6
9.14 min
v2.0.0
4.16 min

Cumulative Flush Time (min) - Lower is Better

v1.15.6
12.57 min
v2.0.0
7.54 min
这些优化使得 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. 基础查询延迟降低 **多类型查询性能全面提升** | 查询类型 | 延迟指标 | 改进幅度 | | ---------------- | ------------ | -------------------------------- | | **Default 查询** | 50 分位延迟 | **-11.40%** (19.97ms → 17.69ms) | | | 99 分位延迟 | **-15.23%** (25.66ms → 21.75ms) | | **Term 查询** | 50 分位延迟 | **-19.88%** (4049ms → 3244ms) | | | 90 分位延迟 | **-18.73%** (4137ms → 3362ms) | | **Range 查询** | 50 分位延迟 | **-31.71%** (42.19ms → 28.81ms) | | | 100 分位延迟 | **-64.68%** (111.42ms → 39.35ms) |

Query Latency Improvements (ms) - Lower is Better

Default Query (50th percentile)
v1.15.6
19.97ms
v2.0.0
17.69ms
Term Query (50th percentile)
v1.15.6
4049ms
v2.0.0
3244ms
Range Query (50th percentile)
v1.15.6
42.19ms
v2.0.0
28.81ms
### 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%**)

Sort Query Latency (ms) - Lower is Better

Desc Sort
v1.15.6
516ms
v2.0.0
99ms
Asc Sort + After
v1.15.6
1272ms
v2.0.0
 33ms
#### 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%**)

Scroll Query Latency (ms) - Lower is Better

50th Percentile
v1.15.6
6511.65ms
v2.0.0
4623.87ms
90th Percentile
v1.15.6
6881.70ms
v2.0.0
5972.79ms
### 5. 高百分位延迟大幅改善 **极端场景下的稳定性提升** 在衡量系统稳定性的高百分位延迟指标上,2.0.0 版本表现卓越: | 场景 | 99.9 分位延迟改进 | 99.99 分位延迟改进 | 100 分位延迟改进 | | ---------------- | ----------------- | ------------------ | ------------------ | | **index-append** | **-43.40%** | **-65.35%** | **-70.91%** | | | (3364ms → 1904ms) | (9618ms → 3333ms) | (13427ms → 3906ms) | 这意味着即使在最坏的情况下,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%**) 这是为了平衡写入性能和查询性能所做的策略调整。用户可以根据实际场景需求,通过以下参数进行优化: ```json { "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** ![](https://infinilabs.cn/img/blog/banner/infini_easysearch_banner.png) INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。 - 官网: https://easysearch.cn - 文档: https://docs.infinilabs.com/easysearch/main