Mongoose是否将查询排入队列?

时间:2014-12-22 17:39:54

标签: database node.js mongoose

我们在负载测试中看到一些使用Mongoose的奇怪但有些可预测的行为。测试完成后,服务会在加载结束后继续查询一段时间。我认为可能是查询正在排队,并且在超时到期后不会被删除。

让我们说,我们每5毫秒进行一次需要10毫秒才能执行的查询。只需一个连接,就可能发生两件事:

  1. 由于连接正在使用,因此会删除一半查询。
  2. 当连接释放时,多余的查询会被排队并执行。
  3. 当数据库像这样重载时,我在文档中找不到描述Mongoose行为的任何内容。看起来后一种选择正在发生。

    有一个设置查询超时的选项,但它没有说明是从初始查询请求还是对数据库执行查询来测量超时。我怀疑它也是后者。

1 个答案:

答案 0 :(得分:0)

默认情况下,当连接断开时,Mongoose将缓冲。请参阅bufferCommands选项。否则,它不应该根据请求的数量进行任何缓冲。正如Nepoxx所说,这可能仅仅是因为Node如何使这些请求等待IO。