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,这些请求成本可能会迅速累积。 在这种情况下,请随时 联系我们。