📚 esrally使用记录
要使用 Elasticsearch Rally (esrally) 比较两个 Elasticsearch 集群的性能,需要按照以下步骤操作:
步骤 1: 安装和配置 esrally
如果你还没有安装 esrally,可以通过 pip 安装:
1 | pip install esrally |
在首次运行 esrally 时,需要进行一些基本配置:
1 | esrally configure |
这个命令会引导你完成一系列配置步骤,包括设置 Elasticsearch 集群的地址、选择是否上传测试结果等。
步骤 2: 选择或创建测试场景(Track)
esrally 提供了多种预定义的测试场景(称为 tracks),你可以选择一个适合你需求的场景。例如,geonames
是一个常用的场景,适用于通用的性能测试。
如果预定义的场景不符合你的需求,你可以创建自定义的场景。这涉及到定义数据集和测试操作。
步骤 3: 对第一个集群进行测试
使用以下命令对第一个 Elasticsearch 集群进行测试:
1 | esrally --track=geonames --target-hosts=es_cluster1_host:9200 --pipeline=benchmark-only |
这里,--track=geonames
指定了使用的测试场景,--target-hosts
指定了第一个 Elasticsearch 集群的地址。
步骤 4: 对第二个集群进行测试
同样的,对第二个 Elasticsearch 集群进行测试:
1 | esrally --track=geonames --target-hosts=es_cluster2_host:9200 --pipeline=benchmark-only |
确保测试条件(如 track、数据量等)与第一个集群的测试相同,以便进行公平比较。
步骤 5: 比较结果
测试完成后,esrally 会生成详细的报告,包括吞吐量、延迟等关键性能指标。你需要比较两个集群的测试结果:
- 吞吐量:通常以每秒处理的请求数量来衡量。
- 延迟:观察平均延迟和延迟分布。
- 资源使用情况:比如 CPU、内存和磁盘 I/O。
注意事项
- 确保在相似的条件下测试两个集群,包括硬件配置、网络环境、Elasticsearch 配置等。
- 测试可能会对集群性能产生短暂影响,因此建议在低峰时段进行。
- 分析结果时,考虑到可能的外部因素,如网络延迟、硬件差异等。
通过这种方法,你可以获得两个 Elasticsearch 集群在相似条件下的性能数据,从而进行有效的比较和分析。
使用 Elasticsearch Rally (esrally) 进行性能测试时指定特定的索引。这通常涉及到创建自定义的测试场景(称为 “track”),其中你可以定义要测试的具体索引以及相关的查询和操作。
创建自定义 Track
为了针对特定索引进行测试,你需要创建一个自定义的 track。以下是创建自定义 track 的基本步骤:
1. 定义 Track 结构
创建一个新的文件夹来存放你的自定义 track。在这个文件夹中,你需要创建一个名为 track.json
的文件,这是定义 track 的主要文件。
2. 编写 track.json
在 track.json
文件中,你可以定义要测试的索引、数据集、操作(比如查询)等。以下是一个简单的示例,展示了如何定义一个针对特定索引的 track:
1 | { |
在这个示例中,indices
部分定义了要测试的索引(在这个例子中是 my_index
),而 challenges
部分定义了要执行的操作,例如索引数据和执行查询。
3. 准备数据文件
如果你的 track 需要索引数据,你需要准备数据文件。这些文件应该放在与 track.json
相同的文件夹中。在上面的示例中,documents.json.bz2
是一个压缩的数据文件,包含了要索引的文档。
4. 运行自定义 Track
一旦你的 track 和相关文件准备好了,你可以使用以下命令运行 esrally:
1 | esrally --track-path=/path/to/your/track --target-hosts=es_host:9200 --pipeline=benchmark-only |
这里 --track-path
指向你的自定义 track 文件夹。
注意事项
- 确保你的自定义 track 中的索引名称、数据文件等与你的实际需求相符。
- 如果你的 Elasticsearch 集群有安全设置(如基本认证),需要在 esrally 的配置中指定这些信息。
- 创建 track 时,确保定义的操作(如查询)适用于你的数据和索引结构。
通过这种方式,你可以对特定的索引进行细致的性能测试,从而更准确地评估和优化 Elasticsearch 集群的性能。