聚合并发性的 AWS DocumentDB 性能问题

问题描述

我正在 AWS 中使用 DocumentDB,当我尝试从不同的聚合查询同时读取同一个集合时遇到了问题。

问题不是我无法从数据库中读取,而是完成查询需要花费大量时间。我是同时触发查询还是一个一个触发查询都没有关系。

我正在使用带有 NodeJS 的 Lambda 函数来运行我的代码。我正在使用 mongoose 来处理与数据库的连接。

这是我放在一起来说明我的问题的示例代码

query1() {
     return Collection.aggregate([...])
}
 
query2() {
  return Collection.aggregate([...])
}

query3() {
  return Collection.aggregate([...])
}

如果我使用 Promise.all

运行它需要 相同的时间

Promise.all([ query1(),query2(),query3() ])

如果我运行它等待上一个完成

query1().then(result1 => query2().then(result3 => query3()))

虽然如果我在不同的 Lambda 执行中运行每个查询,完成每个单独查询所需的时间会显着减少(1 到 2 秒之间)。

因此,如果它们并行运行,则执行应该在花费最多时间(2 秒)的查询时间结束,而不是像现在这样花费 7 秒。

所以我的猜测是无论我如何发送查询,DocumentDB 的实例都会按顺序运行查询。该集合中约有 19,000 个文档,总大小接近 25Mb

当我查看实例的指标时,cpuutilization 仅略高于 8% 并且 RAM 可用仅下降 20Mb。所以我不认为延迟的问题与实例的大小有关。

你知道为什么 DocumentDB 会这样吗?是否可以更改配置以并行运行聚合?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)