Link Search Menu Expand Document Documentation Menu

微调自定义工作负载

虽然自定义工作负载有助于使基准测试更符合您的应用程序需求,但有时需要进行额外调整,以确保它们与生产集群紧密相似。

您可以使用 create-workload 功能来调优自定义工作负载,使其更符合您的基准测试需求。create-workload 可以从所有索引或用户选择的特定索引中提取文档。

需要考虑的特性

当开始使用 create-workload 调优自定义工作负载时,请考虑工作负载的以下特性

  1. 查询 – 考虑查询所针对的文档类型、索引以及查询调用的字段。
  2. 分片大小 – 将工作负载的分片大小与集群的分片大小匹配,否则基准测试将无法模拟您的应用程序行为。Lucene 根据分片大小进行操作,不包含索引。计算您希望包含在自定义工作负载中的任何索引的分片大小。
  3. 分片计数 – 根据您希望调整工作负载大小和提高查询性能的方式选择分片数量。由于每个用例都不同,您可以通过两种方式确定分片计数
    1. 将理想索引大小除以步骤 2 中找到的分片大小。
    2. 将理想的分片数量乘以步骤 2 中找到的分片大小。
  4. 决定提取多少文档(推荐) – 现在分片大小已设置,并且最终索引所需的分片数量已确定,您可以决定要提取多少文档。在某些情况下,用户不希望从索引中检索整个文档语料库,因为语料库可能太大。相反,您可能希望生成一个较小的语料库。然而,生成的索引语料库应该能够代表生产工作负载中的索引。换句话说,它应该包含来自索引各个部分的文档,而不仅仅是来自某个特定区域,例如索引的前半部分或后三分之一。要决定提取多少文档
    1. 将分片数量乘以分片大小。由于每个文档的创建方式不同,因此在数量上添加一个缓冲区——即任意数量的额外文档。当提取的文档数量低于预期数量时,缓冲区提供帮助,这将无助于保持您的分片大小。分片大小应小于提取的文档数量。
    2. 将存储大小除以先前步骤的乘积。该倍数的值用于设置参考索引中的样本文档数量。
  5. 目标集群配置 – 将目标集群的配置和特性纳入您生成工作负载的方式中。

示例

以下示例包含一个名为 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

使用这些信息,您可以开始根据您的规范调整工作负载,如下面的步骤所示

  1. 获取与此索引关联的查询 – 获取向 stocks 索引发出请求所需的查询。
  2. 查找索引的分片大小 – 要获取索引的分片大小,将存储大小除以索引中的分片数量:720 / (12 + (12 * 1)) = 30。30 GB 是分片大小。您可以通过将主存储大小值除以主分片数量来验证这一点。
  3. 确定索引分片数量 – 确定索引中表示生产负载下应用程序所需的分片数量。例如,如果您希望索引存储 300 GB 的文档,但 300 GB 对于基准测试来说太多,请确定一个合理的数字。例如,将 300 GB 文档除以在上一步中确定的 30 GB 分片大小,即 300 / 30 = 10,会生成 10 个分片。这 10 个分片可以是 10 个主分片和 0 个副本,5 个主分片和 1 个副本,或者 2 个主分片和 4 个副本。分片配置取决于您的集群的索引需求。
  4. 决定提取多少文档 – 为了保留 30 GB 并拥有 10 个分片,您需要提取至少 300 GB 的文档。要确定要提取的文档数量,请将存储大小值除以索引大小值,在此示例中,720 / 300 = 2.4。因为您要确保每个分片达到 30 GB 的值,所以最好向下取整并选择 2 作为提取倍数,这意味着 OpenSearch Benchmark 将每隔一个文档提取一次。
  5. 考虑目标集群配置 – 评估您计划使用的集群。考虑用例、集群大小和节点数量。在调优工作负载时,这可能是一个迭代过程,根据工作负载运行的结果对集群进行微调。

复制指标

在许多情况下,工作负载无法完全复制生产集群的精确指标。但是,您可以通过复制以下指标,尽可能接近您的理想集群指标

  • CPU 利用率
  • 搜索请求速率
  • 索引速率
剩余 350 字符

有问题?

想要贡献?