字数 4798,阅读大约需 24 分钟

在构建和维护Elasticsearch集群时,性能是一个永恒的话题。无论是选择合适的硬件配置、调整集群参数,还是决定是否升级到新版本,我们都需要可靠的性能数据作为决策依据。Elasticsearch官方提供的Elasticsearch Benchmarks平台正是为此而生,它通过标准化的测试环境和方法,为我们提供了宝贵的性能参考数据。
然而,对于许多用户来说,理解这些基准测试结果并不容易。仪表板上各种曲线、不同的测试环境、各种car配置以及众多的指标,都可能让人感到困惑。本文旨在深入浅出地解释Elasticsearch Benchmarks的核心概念,帮助你理解这些测试结果背后的含义,从而更好地应用于实际工作中。
Elasticsearch Benchmarks是Elastic官方维护的性能基准测试平台,它基于Rally工具,对Elasticsearch的各个版本在标准化环境下进行性能测试。这些测试结果被公开发布,供社区参考。
Elasticsearch Benchmarks的测试环境主要为裸金属服务器,具体配置如下:
值得注意的是,这些服务器配置了特定的系统参数以优化性能:
/sys/kernel/mm/transparent_hugepage/enabled = always/sys/kernel/mm/transparent_hugepage/defrag = always/sys/devices/system/cpu/intel_pstate/no_turbo = 1测试架构由4台服务器组成:
这种架构设计旨在模拟小型到中型的Elasticsearch集群,而非大规模部署。正如官方文档所述,这些测试"不是可扩展性测试,而是展示Elasticsearch从一个节点到最多三个节点的性能特征"。
问题:Elasticsearch Benchmarks中使用的服务器硬件配置是怎样的?
在Elasticsearch Benchmarks中,主要测试环境使用的是Intel i7-7700 CPU,这是一款4核8线程的处理器。这一点需要特别注意,因为在解读性能数据时,需要考虑到这一硬件规格。
对于特定的测试场景,如ARM架构的测试,会使用不同的硬件。例如,"NYC taxis (ARM)"测试使用的是AWS Graviton 2处理器的m6gd.metal实例。
在每次运行 Benchmarks 时,对应服务器的资源会全部用于计算,也就是Intel i7-7700 CPU的计算能力(所有 CPU 核)会在索引,处理,搜索,聚合的每个阶段都会全部使用。
问题:下面不同的car是什么意思?add-4g-3nodes、add-defaults、add-4g、add-sorted-4g、update-4g
在Elasticsearch Benchmarks中,"car"代表Elasticsearch的配置方案。不同的car反映了不同的Elasticsearch配置,主要包括堆内存大小、节点数量、特殊设置等。让我们逐一解析这些car的含义:
此外,还有一些其他常见的car配置:
car的命名通常遵循一定的模式:[操作类型]-[特殊配置]-[堆内存大小]-[节点数量(可选)]。
你可以通过esrally list cars命令,查看默认的 cars:
____ ____
/ __ \____ _/ / /_ __
/ /_/ / __ `/ / / / / /
/ _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, /
/____/
Name Type Description
----------------------- ------ ----------------------------------
16gheap car Sets the Java heap to 16GB
1gheap car Sets the Java heap to 1GB
2gheap car Sets the Java heap to 2GB
4gheap car Sets the Java heap to 4GB
8gheap car Sets the Java heap to 8GB
defaults car Sets the Java heap to 1GB
ea mixin Enables Java assertions
fp mixin Preserves frame pointers
x-pack-ml mixin X-Pack Machine Learning
x-pack-monitoring-http mixin X-Pack Monitoring (HTTP exporter)
x-pack-monitoring-local mixin X-Pack Monitoring (local exporter)
x-pack-security mixin X-Pack Security问题:下面不同的environment是什么意思?serverless-nightly、adhoc、arm、nightly
在Elasticsearch Benchmarks中,"environment"表示测试的运行环境和目的。不同的environment代表不同的测试上下文:
其他可能遇到的environment还有:
environment的设置允许将不同上下文的测试结果分开存储和比较,避免混淆。
Elasticsearch Benchmarks仪表板中的曲线是理解性能测试结果的关键。这些曲线通常展示了随时间变化的性能指标,让我们来详细解析如何阅读和理解这些数据。
当仪表板上显示多条曲线时,我们可以通过以下方式进行比较:
理解Elasticsearch Benchmarks中各组件之间的关系,对于正确解读测试结果至关重要。下面我们详细解析Race、Car、Environment和Hardware Source之间的层次关系和相互作用。
当Rally执行一次Race时,这些组件的关系如下:
以"PMC track的nightly测试"为例:
通过这种层次结构,Elasticsearch Benchmarks能够系统地测试不同配置和环境下的性能,为用户提供全面的参考数据。
理解了Elasticsearch Benchmarks的原理和指标含义后,关键问题是如何将这些知识应用到实际工作中。以下是一些实用的应用方法和建议。
在考虑是否升级Elasticsearch版本时,可以通过以下步骤利用Benchmark结果:
Benchmark结果可以帮助你进行硬件规划和容量估算:
Benchmark结果可以为Elasticsearch配置优化提供指导:
当遇到性能问题时,Benchmark结果可以作为参考基线:
为了更具体地说明如何应用Elasticsearch Benchmarks,让我们通过几个实际案例进行分析。
场景:一个组织需要决定是否在其Elasticsearch集群中启用安全功能,但担心这会对性能产生负面影响。
分析步骤:
结论:通过benchmark数据,该组织发现启用安全功能后,索引吞吐量下降约10-15%,查询延迟增加约5-10%。考虑到安全需求的重要性,这一性能影响被认为是可接受的,因此决定启用安全功能。
场景:一个公司计划部署新的Elasticsearch集群,需要估算处理每日5000万文档所需的节点数量。
分析步骤:
结论:benchmark显示单节点配置(add-4g)的索引吞吐量约为13,000 docs/s,三节点配置(add-4g-3nodes)约为20,000 docs/s。考虑到每日5000万文档,以及留出足够的处理窗口(8小时),该公司决定部署一个3节点集群,预计能够在约40分钟内完成索引工作,留出充足的余量。
场景:一个团队正在考虑从Elasticsearch 7.10升级到8.0,但担心可能的性能变化。
分析步骤:
结论:通过分析benchmark数据,团队发现在8.0版本中,大多数查询操作的性能有10-20%的提升,但某些复杂聚合的性能略有下降(约5%)。考虑到8.0版本的新功能和整体性能改进,团队决定进行升级,但计划对那些复杂聚合查询进行优化。
虽然Elasticsearch Benchmarks提供了宝贵的性能数据,但理解其局限性同样重要,这有助于我们更准确地解读和应用这些结果。
Benchmark环境与实际生产环境通常存在显著差异:
在解读Benchmark结果时,应注意以下几点:
Elasticsearch Benchmarks是理解Elasticsearch性能特征的宝贵资源。通过深入理解其测试环境、指标含义和各组件之间的关系,我们可以更有效地解读这些性能数据,并将其应用到实际工作中。
关键要点总结:
通过正确理解和应用Elasticsearch Benchmarks,我们可以做出更明智的决策,构建更高效、更可靠的Elasticsearch系统,为用户提供更好的搜索和分析体验。
无论你是Elasticsearch的新手还是经验丰富的专家,希望本文能帮助你更好地理解和利用这一强大的性能测试资源,为你的Elasticsearch之旅提供有力支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。