Skip to main content

AWS 成本优化

Quickwit 已经在 Amazon S3 上进行了测试。此页面总结了我们从该经验中学到的内容。

真实世界示例

在这篇 博客文章 中,我们对 23 TB 的数据进行了索引,并评估了性能和成本。 您可以根据这篇文章推断出在您的数据集上进行索引和查询的成本。

数据传输成本和延迟

云提供商会对进出其网络的数据传输收费。此外,从远程机器查询索引会增加额外的延迟。 因此,我们建议您在云提供商网络内的实例上测试和使用 Quickwit。

通过明智选择实例优化带宽

我们建议选择具有高性能网络的实例,以便更快地从 Amazon S3 下载数据。根据我们的经验,c5n.2xlarge 实例提供了最佳的性价比。

请求成本

最后说明一下对象存储请求的成本。实际上,这些成本 非常低,GET 请求为 $0.0004 / 1000 次请求,PUT 请求为 $0.005 / 1000 次请求,在 AWS S3 上。

PUT 请求

在索引过程中,Quickwit 会将新分片上传到 Amazon S3,并逐步合并它们,直到达到 1000 万条文档,我们称之为“成熟分片”。这种分片的典型大小在 1GB 到 10GB 之间,通常需要 2 次 PUT 请求来上传(每 5GB 一次 PUT 请求)。

使用默认的索引参数 commit_timeout_secs 为 60 秒 和 merge_policy.merge_factor 为 10,并假设您希望每分钟处理 100 万条文档,这将使您的成本低于每月 $1。

GET 请求

在查询时,Quickwit 需要发出多个 GET 请求:

#num requests = #num splits * ((#num search fields * #num terms * 3) + (#num search fields with fieldnorms enabled) + 1 (timestamp fast field if present)) + #num docs returned

上述公式假设热缓存已缓存,首次查询每个分片后将加载热缓存。 #num splits 可以通过 修剪 来减少。

当未启用位置信息时,每个术语仅执行 2 次 GET 请求。

如果您的分片数量很多或 QPS > 10,这些请求成本可能会迅速累积。 在这种情况下,请随时 联系我们