我们在负载测试中看到一些使用Mongoose的奇怪但有些可预测的行为。测试完成后,服务会在加载结束后继续查询一段时间。我认为可能是查询正在排队,并且在超时到期后不会被删除。
让我们说,我们每5毫秒进行一次需要10毫秒才能执行的查询。只需一个连接,就可能发生两件事:
当数据库像这样重载时,我在文档中找不到描述Mongoose行为的任何内容。看起来后一种选择正在发生。
有一个设置查询超时的选项,但它没有说明是从初始查询请求还是对数据库执行查询来测量超时。我怀疑它也是后者。
答案 0 :(得分:0)
默认情况下,当连接断开时,Mongoose将缓冲。请参阅bufferCommands选项。否则,它不应该根据请求的数量进行任何缓冲。正如Nepoxx所说,这可能仅仅是因为Node如何使这些请求等待IO。