ES(7.6.2) vs ES(7.7.1)
测试工具:esrall
数据集: geomanes 地理数据文档(官方提供的标准测试数据集)
GC 回收模式:CMS
JVM 启动参数: 未做额外配置,使用默认参数。
测试结果: 请查看附录文件
一、核心性能 指标 对比
- 写入性能(index-append)
| 指标 | 7.6.2版本 | 7.7.1版本 | 变化幅度 |
|---|---|---|---|
| 平均吞吐量 | 57,555 docs/s | 58,726 docs/s | ↑2.03% |
| 99th延迟 | 1,898 ms | 2,184 ms | ↑15.06% |
| 存储空间(Store size) | 3.23 GB | 2.92 GB | ↓9.38% |
潜在影响分析
平均 吞吐量 : 数据写入速度小幅度提升,系统吞吐能力增强
99th延迟: 高负载场景下响应延迟显著增加,可能影响稳定性
存储空间(Store size): 存储效率优化,磁盘占用减少
- 内存 与 GC 优化
| 指标 | 7.6.2版本 | 7.7.1版本 | 变化幅度 |
|---|---|---|---|
| 堆内存占用(Heap used) | 4.84 MB | 0.72 MB | ↓85.15% |
| Old Gen GC时间 | 8.63 s | 4.52 s | ↓47.65% |
堆内存 占用( Heap used): 内存利用率大幅优化,减少JVM压力
Old Gen GC 时间: 长生命周期对象回收效率提升,系统停顿减少
- 查询与统计性能
| 任务类型 | 关键指标(P99延迟) | 7.6.2版本 | 7.7.1版本 | 变化幅度 |
|---|---|---|---|---|
| index-stats | 服务时间 | 7.32 ms | 4.20 ms | ↓42.64% |
| node-stats | 服务时间 | 8.43 ms | 7.32 ms | ↓13.1% |
| term查询 | 服务时间 | 6.67 ms | 8.13 ms | ↑21.84% |
- (index/node-stats) :延迟降低20%-40%,反映元数据管理优化。
term查询:高百分位延迟上升21.8%,可能与索引分段策略调整(Segment count减少23%)有关,需关注高频查询场景表现。
二、关键发现与性能回退
-
写入 吞吐量 与延迟的权衡 Contender在平均吞吐量上提升2%,但写入高百分位延迟(P99-P100)显著增加(+15%~16%)。可能原因:
- 新版geonames索引策略更倾向于批量处理,牺牲部分实时性以换取吞吐量提升。
- 需评估业务对高延迟的容忍度(如是否影响用户体验或下游系统)。
-
存储与 内存 效率的突破性改进
- 存储压缩优化:Store size减少9.38%,堆内存占用下降85%,表明数据结构或压缩算法改进。
- GC效率提升:Young/Old Gen GC次数和时间减少,尤其Old Gen GC时间下降47%,系统停顿风险降低。
-
查询性能的分化
- 统计类操作(index/node-stats) :延迟降低20%-40%,反映元数据管理优化。
- Term查询:高百分位延迟上升21.8%,可能与索引分段策略调整(Segment count减少23%)有关,需关注高频查询场景表现。
ES(7.6.2) vs ES(7.10.2)
测试工具:esrall
数据集: geomanes 地理数据文档(官方提供的标准测试数据集)
GC回收模式:CMS
JVM启动参数: 未做额外配置,使用默认参数。
测试结果: 请查看附录文件
一、核心性能指标对比
- 索引与写入性能
| 指标 | 7.6.2 (Baseline) | 7.10.2 (Contender) | 变化率 |
|---|---|---|---|
| 累计索引时间(主分片) | 22.95 min | 19.50 min | ↓15.03% |
| 最大索引吞吐量 | 58,393 docs/s | 64,212 docs/s | ↑9.97% |
| 99% 索引延迟 | 1,898 ms | 1,676 ms | ↓11.70% |
| 存储占用 | 3.23 GB | 2.85 GB | ↓11.75% |
结论:
7.10.2 版本在索引效率、吞吐量、存储压缩上显著优化,延迟降低与吞吐量提升可能源于 Lucene 底层优化或索引流程改进。
- 查询性能
| 查询类型 | 吞吐量变化 | 50% 延迟变化 | 90% 延迟变化 |
|---|---|---|---|
| index-append | ↑8.56%~10.87% | ↓14.32% | ↓14.70% |
| scroll | 持平 | ↓22.11% | ↓21.89% |
| term | ↓0.31% | ↑43.13% | ↑42.63% |
| default | ↓1.92% | ↑49.94% | ↑43.61% |
关键发现:
- 正向优化:
index-append和scroll查询性能全面提升,推测与分段合并策略优化和缓存机制改进有关。 - 性能下降:
term和default查询延迟上升,可能与查询执行计划调整或字段数据加载策略变化有关,需进一步排查验证。
- 资源效率与 GC
| 指标 | 7.6.2 | 7.10.2 | 变化率 |
|---|---|---|---|
| Young Gen GC 时间 | 46.88 s | 38.88 s | ↓17.08% |
| Old Gen GC 次数 | 70 | 42 | ↓40.00% |
| 堆内存占用(segments) | 4.84 MB | 0.71 MB | ↓85.22% |
结论:
7.10.2版本在内存管理和垃圾回收上表现更优,堆内存占用减少可能与 Segment 元数据压缩或 Doc Values 编码优化相关。
二、关键优化点与性能回退
性能优化
- 索引吞吐量提升:通过降低分片级索引延迟(如最大分片索引时间 ↓11.96%),提升并发写入效率。
- 存储压缩:存储占用减少 11.75%,可能受益于
_source字段压缩算法改进或 Lucene 编码优化。 - GC 效率:Old Gen GC 时间减少 60.31%,说明堆内存碎片化问题得到缓解。
查询性能回退
-
default 任务:
- 吞吐量下降 1.14% (50.0 ops/s → 49.4 ops/s)。
- 100th 百分位服务时间增加 88.99% (14.4 ms → 27.2 ms)
-
term 查询延迟:
- 50th 百分位延迟增加 43.13% (4.69 ms → 6.71 ms),可能涉及索引结构或查询路径变化。
ES(7.6.2) vs ES(7.10.0)
测试工具:esrall
数据集: geomanes 地理数据文档(官方提供的标准测试数据集)
GC回收模式:CMS
JVM启动参数: 未做额外配置,使用默认参数。
测试结果: 请查看附录文件
一、核心性能指标对比
以下是对两组测试数据的详细分析,基于提供的性能指标和差异数据。我们将从多个角度进行解读,并总结整体表现。
- 索引性能
| 指标 | 基准值 | 对照值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 累计索引时间 | 22.9549 min | 18.2059 min | -4.74898 min | ↓20.69% |
| 最小累计索引时间 | 0 min | 3.49265 min | +3.49265 min | |
| 中位累计索引时间 | 0.0329917 min | 3.62343 min | +3.59044 min | ↑10882.87% |
| 最大累计索引时间 | 4.75328 min | 3.80365 min | -0.94963 min | ↓19.98% |
分析:
- 对照版本的累计索引时间显著降低(-20.69%),表明其在索引操作上的效率有所提升。
- 中位累计索引时间大幅增加,可能是因为对照版本的某些分片在处理上存在延迟或负载不均的问题。
- 最大累计索引时间减少,说明对照版本在极端情况下的性能表现更稳定。
- 合并性能
| 指标 | 基准值 | 对照值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 累计合并时间 | 4.92308 min | 4.6242 min | -0.29888 min | ↓6.07% |
| 累计合并计数 | 38 | 38 | 0 | 0.00% |
| 累计合并节流时间 | 1.32147 min | 0.866733 min | -0.45473 min | ↓34.41% |
分析:
- 对照版本的累计合并时间略有下降(-6.07%),但变化不大。
- 合并节流时间显著减少(-34.41%),表明对照版本在资源管理方面更为高效。
- 刷新与刷新计数
| 指标 | 基准值 | 对照值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 累计刷新时间 | 2.10852 min | 1.90945 min | -0.19907 min | ↓9.44% |
| 累计刷新计数 | 325 | 152 | -173 | ↓53.23% |
分析:
- 刷新时间减少(-9.44%),刷新计数大幅下降(-53.23%),这表明对照版本通过优化减少了不必要的刷新操作,从而提升了性能。
- 垃圾回收性能
| 指标 | 基准值 | 对照值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 年轻代GC时间 | 46.884 s | 33.785 s | -13.099 s | ↓27.94% |
| 年轻代GC计数 | 5405 | 4569 | -836 | ↓15.47% |
| 老年代GC时间 | 8.634 s | 3.988 s | -4.646 s | ↓53.81% |
| 老年代GC计数 | 70 | 43 | -27 | ↓38.57% |
分析:
- 年轻代和老年代的GC时间及计数均显著下降,对照版本在内存管理上表现更优,减少了GC开销。
二、关键优化点与性能回退
查询性能波动
- default任务延迟上升:50th-99.9th百分位服务时间增长21%-40%,可能因默认配置(如线程池、缓存策略)调整导致资源争用。
- term查询任务延时上升: 50th-99.9th百分位服务时间增长10%-20% 。
- country_agg_cached高百分位服务时间恶化:99th百分位服务时间增加25.97%(4.28 ms → 5.40 ms),需验证缓存命中率或聚合计算逻辑变更。
分片负载均衡性能波动
- Flush操作耗时增加98.62% :总Flush时间从0.22分钟增至0.43分钟,可能与段合并策略或磁盘I/O性能波动相关。
ES(7.6.2) vs ES(7.17.28)
测试工具:esrall
数据集: geomanes 地理数据文档(官方提供的标准测试数据集)
GC回收模式:CMS
JVM启动参数: 未做额外配置,使用默认参数。
测试结果: 请查看附录文件
本次对比基于 append-no-conflicts 场景(geonames 数据集从 7.6.2 升级到 7.17.28),结果显示 索引效率显著提升、GC 时间大幅优化、存储占用减少,但部分高百分位查询延迟有所上升。以下是关键分析:
一、核心性能指标对比
| 指标 | 基准值 | 对照值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 累计索引时间(主分片) | 22.9549 min | 18.4548 min | -4.50008 min | ↓19.60% |
- 索引与存储优化
-
索引效率提升
-
主分片累计索引时间减少 19.6% (22.95 → 18.45 分钟),合并次数降低 13.16%,说明数据写入更高效。
-
存储压缩优化:
- 存储体积减少 12.26%(3.23 → 2.83 GB),堆内存占用下降 84.92%(4.84 → 0.73 MB),文档值(doc values)和词项(terms)内存占用分别减少 59.15% 和 85.35%。
- Translog 体积减少 83.33%,表明写入负载的持久化效率提升。
-
| 指标 | 基准值 | 竞争者值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 累计合并时间(主分片) | 4.92308 min | 5.0992 min | +0.17612 min | ↑3.58% |
| 累计合并次数(主分片) | 38 次 | 33 次 | -5 次 | ↓13.16% |
-
Segment 管理改进
- Segment 数量减少 17.8%,刷新次数降低 54.77%,合并节流时间减少 21.23%,说明段合并策略优化。
- 垃圾回收(GC)效率飞跃
| 指标 | 基准值 | 竞争者值 | 差异 | 百分比变化 |
|---|---|---|---|---|
| 年轻代 GC 时间 | 46.884 s | 25.721 s | -21.163 s | ↓45.14% |
| 年轻代 GC 次数 | 5405 次 | 2263 次 | -3142 次 | ↓58.13% |
-
Young Gen GC:
- 时间减少 45.14%(46.88 → 25.72 秒),次数减少 58.13%。
-
Old Gen GC:
- 时间减少 61.17%(8.63 → 3.35 秒),次数减少 52.86%。
二、关键优化点与性能回退
-
内存分配策略优化显著降低 JVM 停顿时间。
-
查询性能亮点
-
聚合查询优化
- country_agg_uncached 延迟下降 28.93% (185.15 → 131.58 ms),表明非缓存聚合计算效率提升。
-
Scroll 性能增强
- 分页查询延迟下降 23.87% (527.68 → 401.72 ms),服务时间同步优化。
-
Painless 脚本改进
- painless_dynamic 延迟下降 5.04%(503.99 → 478.56 ms),动态脚本执行效率提升。
-
-
性能回退
-
1. 高百分位延迟上升
-
写入场景:
index-append的 90th 和 99th 延迟分别上升 8.64% 和 6.63% ,可能因数据分布不均或资源争用导致尾部延迟波动。
-
节点监控负载:
node-stats的 90th 延迟激增 1302.97% (7.57 → 106.26 ms),99th 延迟上升 1403.62%,需排查监控采集瓶颈。
-
2. 部分查询性能下降
-
短语查询(Phrase) :
- 99.9th 服务时间增加 138.23% (10.70 → 25.49 ms),可能因复杂查询优化不足。
-
表达式查询(Expression) :
- 延迟上升 10.47%(383.50 → 423.66 ms),需检查脚本编译或计算资源分配。
-
压测结论
以ES7.6.2测试数据为基准,对比结果如下。
- 7.7.1
查询性能有小幅度提升,term查询性能略有波动。gc效率提高
-
7.10.0
- 50th-90th的查询延时均有不同程度上升(10%-40%),实际业务中查询速度可能会受此影响。gc效率提高
-
7.10.2
- 50th-90th的查询延时均有不同程度上升(10%-40%),实际业务中查询速度可能会受此影响。gc效率提高,合并效率提高。
-
7.17.28
7.17.28版本查询性能与7.6.2相差不大,但是7.17.28版本高级功能需要license。
附录:
- 数据集:
geonames(地理数据文档)。 - 硬件:未明确,默认使用
external类型基准车(假设同环境对比)。 - 压测任务:覆盖索引、聚合、脚本、滚动等 12 种操作类型。
高版本订阅功能差异
测试结果原始数据:
7.6.2vs7.7.1
lue
7.6.2vs7.10.2
lue
7.6.2vs7.10.0
lue
7.6.2vs7.17.28
lue