ES性能分析
小明 Lv6

📚 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
"version": 2,
"description": "My Custom Track",
"indices": [
{
"name": "my_index",
"body": "index-settings.json"
}
],
"corpora": [
{
"name": "my_corpora",
"documents": [
{
"source-file": "documents.json.bz2",
"document-count": 1000000,
"compressed-bytes": 100000000,
"uncompressed-bytes": 500000000
}
]
}
],
"challenges": [
{
"name": "default",
"schedule": [
{
"operation": "index-append",
"clients": 8
},
{
"name": "search",
"operation": {
"operation-type": "search",
"index": "my_index",
"body": {
"query": {
"match_all": {}
}
}
},
"clients": 4
}
]
}
]
}

在这个示例中,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 集群的性能。

关注获取更多资源

image
 评论