微调自定义工作负载
虽然自定义工作负载有助于使基准测试更符合您的应用程序需求,但有时需要进行额外调整,以确保它们与生产集群紧密相似。
您可以使用 create-workload
功能来调优自定义工作负载,使其更符合您的基准测试需求。create-workload
可以从所有索引或用户选择的特定索引中提取文档。
需要考虑的特性
当开始使用 create-workload
调优自定义工作负载时,请考虑工作负载的以下特性
- 查询 – 考虑查询所针对的文档类型、索引以及查询调用的字段。
- 分片大小 – 将工作负载的分片大小与集群的分片大小匹配,否则基准测试将无法模拟您的应用程序行为。Lucene 根据分片大小进行操作,不包含索引。计算您希望包含在自定义工作负载中的任何索引的分片大小。
- 分片计数 – 根据您希望调整工作负载大小和提高查询性能的方式选择分片数量。由于每个用例都不同,您可以通过两种方式确定分片计数
- 将理想索引大小除以步骤 2 中找到的分片大小。
- 将理想的分片数量乘以步骤 2 中找到的分片大小。
- 决定提取多少文档(推荐) – 现在分片大小已设置,并且最终索引所需的分片数量已确定,您可以决定要提取多少文档。在某些情况下,用户不希望从索引中检索整个文档语料库,因为语料库可能太大。相反,您可能希望生成一个较小的语料库。然而,生成的索引语料库应该能够代表生产工作负载中的索引。换句话说,它应该包含来自索引各个部分的文档,而不仅仅是来自某个特定区域,例如索引的前半部分或后三分之一。要决定提取多少文档
- 将分片数量乘以分片大小。由于每个文档的创建方式不同,因此在数量上添加一个缓冲区——即任意数量的额外文档。当提取的文档数量低于预期数量时,缓冲区提供帮助,这将无助于保持您的分片大小。分片大小应小于提取的文档数量。
- 将存储大小除以先前步骤的乘积。该倍数的值用于设置参考索引中的样本文档数量。
- 目标集群配置 – 将目标集群的配置和特性纳入您生成工作负载的方式中。
示例
以下示例包含一个名为 stocks
的索引。stocks
索引包含纽约证券交易所 (NYSE) 上所有交易股票的统计数据。OpenSearch Dashboards 提供了关于 stocks
索引的信息,如下面的代码示例所示
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open stocks asjdkfjacklajldf 12 1 997818020 232823733 720gb 360gb
使用这些信息,您可以开始根据您的规范调整工作负载,如下面的步骤所示
- 获取与此索引关联的查询 – 获取向
stocks
索引发出请求所需的查询。 - 查找索引的分片大小 – 要获取索引的分片大小,将存储大小除以索引中的分片数量:
720 / (12 + (12 * 1)) = 30
。30 GB 是分片大小。您可以通过将主存储大小值除以主分片数量来验证这一点。 - 确定索引分片数量 – 确定索引中表示生产负载下应用程序所需的分片数量。例如,如果您希望索引存储 300 GB 的文档,但 300 GB 对于基准测试来说太多,请确定一个合理的数字。例如,将 300 GB 文档除以在上一步中确定的 30 GB 分片大小,即
300 / 30 = 10
,会生成 10 个分片。这 10 个分片可以是 10 个主分片和 0 个副本,5 个主分片和 1 个副本,或者 2 个主分片和 4 个副本。分片配置取决于您的集群的索引需求。 - 决定提取多少文档 – 为了保留 30 GB 并拥有 10 个分片,您需要提取至少 300 GB 的文档。要确定要提取的文档数量,请将存储大小值除以索引大小值,在此示例中,
720 / 300 = 2.4
。因为您要确保每个分片达到 30 GB 的值,所以最好向下取整并选择 2 作为提取倍数,这意味着 OpenSearch Benchmark 将每隔一个文档提取一次。 - 考虑目标集群配置 – 评估您计划使用的集群。考虑用例、集群大小和节点数量。在调优工作负载时,这可能是一个迭代过程,根据工作负载运行的结果对集群进行微调。
复制指标
在许多情况下,工作负载无法完全复制生产集群的精确指标。但是,您可以通过复制以下指标,尽可能接近您的理想集群指标
- CPU 利用率
- 搜索请求速率
- 索引速率